Как это можно преобразовать из.live() в.on()?
$('[id^=generic1_id_]', '[id^=generic2_id_]').live('click', function(){
Чтобы преобразовать в.on(), я мог бы создать два рабочих примера, описанных ниже, но потом мне нужно повторно использовать код в обоих, тогда как с примером.live() я могу ссылаться на оба селектора, и код будет выполняется в событии клика для любого селектора. Кроме того, я использую.live(), потому что обработчик кликов должен применяться к новым элементам, добавленным/созданным после загрузки DOM. Я знаю, что примеры.on() ниже будут работать для существующих и новых элементов, но я должен их отделить, потому что я не могу понять, как написать код, где он будет применяться к обоим селекторам при использовании синтаксиса.on().
// Generic Example - Click handler for elements with an IDs beginning with "generic1_id_"
$(document).on('click', '[id^=generic1_id_]', function(){
}
А ТАКЖЕ
// Generic Example - Click handler for elements with an IDs beginning with "generic2_id_"
$(document).on('click', '[id^=generic2_id_]', function(){
}
Я пробовал это, но это неверно, потому что '[id ^ = generic2_id_]' будет интерпретироваться как данные не как 2-й селектор.
// Won't work
$(document).on('click', '[id^=generic1_id_]', '[id^=generic2_id_]', function(){
Неожиданно мало что можно найти в поисках, чтобы найти что-либо помимо простых примеров преобразования.live() в.on(). Есть идеи?
Попробуй это:
$(document).on('click', '[id^=generic1_id_],[id^=generic2_id_]', function(){
//your code goes here
});
Правильное преобразование:
$(document).on('click', '[id^=generic2_id_] [id^=generic1_id_]', function(){
потому что с вашим оригиналом вы использовали запятую между двумя разными селекторами, указав как селектор, так и контекст. .live всегда привязан к документу, затем он использовал селектор и контекст для фильтрации событий, которые доходят до документа только до тех, которые соответствуют селектору и являются потомками элемента, соответствующего контексту.
Это звучит, как будто ваш исходный код фактически не делает то, что вы думаете.
$('[id^=generic1_id_]', '[id^=generic2_id_]').live('click', function(){
Ваш исходный код привяжет событие клика ко всем элементам, которые соответствуют [id^=generic1_id_]
и фильтрует события только для событий, поднятых элементами, которые соответствуют [id^=generic2_id_]
[id^=generic1_id_]
или[id^=generic2_id_]
; для этого селектор (после'$'
) должен быть контейнером, содержащим эти элементы.[id^=generic1_id_]
но не для элементов[id^=generic2_id_]
, как в исходном коде.