2015-12-21 3 views
1

Я разрабатываю список дел. Я хочу переключить класс элемента списка HTML, который представляет собой задачу. Элемент list генерируется пользователем после загрузки страницы. Теперь функция ToggleClass не работает. Я могу поймать событие dblclick в консоли, но класс не переключается.ToggleClass() для созданного пользователем элемента не работает

JavaScript/Jquery выглядит следующим образом:

$(document).ready(function() { 
    $(document).on("dblclick", ["li"], setStatus); 
    console.log("Call setStatus"); 
}); 

И функция setStatus:

setStatus = function(){ 
    console.log("Double clicked on the li"); 
    $(this).toggleClass("done"); 
}; 

HTML-

<body> 
     <div id ="todoList"> 
      <ul></ul> 
     </div> 
     <input type ="text" id ="todoText"/> 
     <button id ="addTodoButton">Add!</button> 
    </body> 

The CSS-класс

.done{ 
    color: #006600; 
} 
+3

В документации [здесь] (http://api.jquery.com/on/), 'selector' является строкой, а не массивом. Удалите скобки '[...]' ... – War10ck

+1

В doc '[, selector]' означает необязательный :) Используя '['li"] ', вы передаете его как данные события, и поэтому' this' внутри обработчик ссылается на 'document', а затем вы переключили класс на документ (который не имеет смысла) –

ответ

4
$(document).ready(function() { 
    $(document).on("dblclick", "li", setStatus); 
    console.log("Call setStatus"); 
}); 

Удалить [] от ["li"], это недействительный селектор, ваш код активировал обратный вызов, поэтому он отобразил сообщение на консоли.

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