2013-05-30 2 views

ответ

6

Вызов .on() на объект JQuery, содержащий несколько элементов будет добавить обработчик к каждому элементу.

2
$('[id^="thing"]').on("click", function() { }); 
+0

+1, потому что вы быстро отреагировали на SLaks ответить;) –

-1

попробовать

$('[id^="thing"]').each(function(i, el) { 
     $(el).on("click", function() {     
     }) 
    }); 
+2

@downvoter спасибо за интерес к моей post..please комментарий. –

+2

@RohitAgrawal - нет, он не будет, он связывается с каждым совпадающим элементом один раз. – Gabe

-1

вы не нужно .each с .on,

вещь, которую вы хотите, может быть сделано только с этим -

Хороший способ

$(document).on('click','[id^="thing"]', function() { 
    console.log(this.id) 
}); 

это может быть сделано, как вы хотите, но как это повлияет на производительность без причины

так, как вы хотите, но следует избегать

$('[id^="thing"]').each(function(){ 
    $(this).on('click', function() { 
    console.log(this.id) 
    }); 
}); 

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

неправильный путь

$('[id^="thing"]').each(function(){ 
    $('[id^="thing"]').on('click', function() { 
    console.log(this.id) 
    }); 
}); 
+2

Упомяните пояснение –

1

Вы можете использовать эту версию, чтобы указать селектор, чтобы определить, какие дочерние элементы должны инициировать событие.

$('[id^="thing"]').on('click','button (or whatever selector)', function(){ 
    // "this" refers to triggering element 
    alert($(this).text()); 
}); 
+0

http://api.jquery.com/on/ для документации. – mcNux

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