Событие щелчка Jquery по содержимому аккордеона

#javascript #jquery #jquery-ui

#javascript #jquery #jquery-пользовательский интерфейс

Вопрос:

Внутри моего содержимого accordion у меня есть строки данных, которые загружаются вызовом ajax. Я хочу зафиксировать щелчок по каждой из этих строк отдельно и получить идентификатор из выбранной строки. Я могу зафиксировать событие щелчка по содержимому аккордеона. но я не могу получить его отдельно для каждой строки.

 <dl id="accRegion">
<#list abc as xyz>          
<dt id="${xyz}"><a class="red">${xyz}</a></dt>
<dd id="${xyz}">
    <dl id="dateList" class="Heading">
    <#list somelist as element>
        <dt id="dateDiv"><a id="${element}" class="orange">${element}</a></dt>                  
    </#list>
    </dl>
</dd>
</#list>
  

это работает

 $("#accRegion dd").click(function(){});
  

но если я попробую что-то вроде приведенного ниже, это не сработает

 $("#accRegion dd dt").click(function(){});
  

Я не уверен, что с этим не так. Ценю любые указания на это.

Комментарии:

1. Чтобы повторить мой вопрос, при нажатии на каждый dateDiv я хочу зафиксировать значение $ {xyz} и $ {element}. если я использую $(«#accRegion dd»).click(функция(){}) Я могу правильно записать $ {xyz}, но $ {element} идет первым в списке. И если я использую $(«#accRegion dd dt»).live(‘click’, функция() {}) Я могу захватить $ {element}, но $ {xyz} всегда является первым элементом в списке. Любые указания были бы высоко оценены.

Ответ №1:

Поскольку строки создаются динамически, я предполагаю, что вам следует использовать это:

 $("#accRegion dd dt").live('click', function() {
  // your code here
});
  

Комментарии:

1. Да, это работает отлично. Но теперь у меня есть еще одна проблема. в вызове ajax я хочу отправить идентификатор элемента, на который нажат. и $(this).find(«a»).attr(«id») получает идентификатор первой строки. как получить идентификатор выбранной строки?

2. если этот ответ имеет отношение к вашему вопросу, вы должны принять этот ответ, нажав на галочку слева, чтобы ответить.

3. Да, я сделал это, но после этого люди перестали отвечать на мою проблему. итак, удалено это: O. люди отвечают только на новые сообщения?

Ответ №2:

Вы закрываете свой <dt> с помощью </div>

Ответ №3:

 $(document).on('click',"#ur_id/class", function() {
  // your code here
});