2016-04-13 2 views
1

Я использую классический обработчик jQuery «.on» для проверки щелчка на каком-то якоре, который я добавил с добавлением.jQuery: как получить параметр из элемента html, добавленного с помощью .append и обрабатываемого с .on?

$('#selector-to-thing-that-exists').on('click', '.thing-that-will-be-added-later', function() { 
    //I want to get the "data-pointnumber" and "data-goodanswer" on the clicked element. 
}); 

Проблема здесь состоит в том, что $ (это) дать мне $ («# Селектор к вещи, что-существует»), а не Clicked элемент (это ссылка). Я достаточно ясно?

$.each(this.currentQuestion.Reponse,function (arrayID,rep) { 
    $('#QuestionContainerSingle').find('.liste-boutons').append('<li><a href="" class="button-big btn-rep" data-nbpoints="'+rep.NbPoints+'" data-bonne="'+rep.Bonne+'">'+rep.Texte+'</a></li>'); 
}); 
$('#QuestionContainerSingle').on('click','.btn-rep',function (e) { 
    e.preventDefault(); 
    console.log($(this).attr('data-nbpoints')); 
}); 

Вот HTML ... Как это часть большого приложения, это не так легко извлечь только то, что мне нужно на этот вопрос!

<div class="question-content" id="QuestionContainerSingle"> 
      <div class="header-question"> 
       <p class="intitule"> 

       </p> 
      </div> 
      <div class="content"> 
       <div class="title-box">Find the best answer</div> 
       <ul class="liste-boutons"> 

       </ul> 
      </div> 
     </div> 
+0

$ (это) предоставит вам класс «все, что будет дальше - позже», а не # селектор к чему-то-то-есть. Дополнительный параметр, передаваемый между кликом и функцией(), в основном относится к целевому элементу внутри # selector-to-thing-that-exists. Кроме того, если бы вы могли добавить html, это помогло бы разобраться с точной проблемой. – DinoMyte

+0

Я отредактировал свой вопрос с помощью некоторого html и немного изменил свой JS, чтобы быть яснее ... Я до сих пор не понимаю, почему $ (this) do не возвращайте мне элемент «.btn-rep». Просто отметьте, что «e.target» вернет мне хороший элемент! – Dantahoua

ответ

0

Наконец-то я нахожу виновника! Я использую this.btnRep = $ ('. Btn-rep'); в начале моего приложения. Когда я использую

$('#QuestionContainerSingle').on('click',**this.btnRep**,function (e) { 
    e.preventDefault(); 
    console.log($(this).attr('data-nbpoints')); 
}); 

это не работает. Но когда я использую

$('#QuestionContainerSingle').on('click',**'.btn-rep'**,function (e) 

это работает ... Stange!

+1

Причина, по которой он не работает в первом случае, заключается в том, что вы передаете объект внутри своего селектора. Селекторы jquery работают только со строковыми значениями, а не с объектами – DinoMyte

Смежные вопросы