2016-04-12 5 views
0

Использование JQuery Я добавляю tr, где один из td включает в себя флажок. Он выглядит красиво на экране. Однако я хочу выбрать один из флажков и вызвать функцию при щелчке. По какой-то причине селектор не видит добавленный флажок. Я предполагаю, что это связано с тем, что флажок не находится в исходном коде HTML.Как установить флажок, который был добавлен

Итак, вопрос: что мне делать, чтобы установить этот флажок?

$.each(categories, function (i, product) { 
    $(".table_products").append('<tr class="empty"><td >' + product.product_name + '</td><td>' + product.price + '</td><td> <input type="checkbox" value="cat_id"></td></tr>'); 

    $("tr").addClass("cat_products"); 
}); 

$("td input:checkbox").on('click', function() { 
    alert('line 41'); 
}); 
+2

Этот код должен работать до тех пор, пока вы запускаете '.on()' после цикла '.each'. – Barmar

+0

Работает для меня: https://jsfiddle.net/barmar/mybqnuy5/1/ – Barmar

+0

Предполагая, что ваша таблица '.table_products', вы могли бы попробовать что-то вроде этого? '$ ('. table_products'). on ('click', 'td input: checkbox', function() {...'. Это добавило бы прослушиватель событий в таблицу и автоматически будет применено к недавно добавленному checkboxes – David784

ответ

0

Я должен дать краткое описание того, как работают события. В JavaScript события «пузырь». Это означает, что если вы нажмете на интервал, то в нем сначала появится событие клика. Затем событие click пузыриется до родителя диапазона (скажем, div). Затем событие пузырится оттуда до следующего элемента в цепочке. И так далее, пока не дойдете до верхнего элемента DOM.

jQuery дает возможность подключать слушателей событий к любому уровню в документе. И это также дает вам возможность фильтровать. Поэтому, когда мы делаем это:

$('.table_products').on('click', 'td input:checkbox', function(){...});

Мы прикрепляем слушатель событий для .table_products элемента. этот элемент никогда не меняется. Это всегда есть. Мы добавили часть фильтра, или 'td input:checkbox'. Эта часть сообщает jQuery: «Когда вы получаете событие click внутри таблицы, посмотрите и посмотрите, произошло ли это событие щелчка на дочернем элементе, который соответствует этому фильтру».

Это позволяет добавлять новые элементы к слушателю. Надеюсь, это объяснение поможет. Вы можете получить дополнительную информацию here

+0

Большое спасибо за объяснение! – Vince

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