Этот простой JQuery не будет работать для меня при использовании on
. Есть еще один способ, чтобы использовать on
? Будет ли on
не работать с class
. Я использую jQuery JavaScript Library v1.8.3
Я пытаюсь переместить старый код из live()
в on()
.
$(".subUser").on("click",function() {
alert("The paragraph was clicked.");
});
<div class="container">
<div><i class="icon-add subUser"></i></div>
</div>
Ваш код выглядит хорошо, если вы не добавляете элементы с классом subUser
динамически. Вероятно, вам нужно будет вставить document.ready
$(document).ready(function(){
$(".subUser").on("click",function() {
alert("The paragraph was clicked.");
});
});
Если вы добавляете элементы динамически, вам требуется делегирование событий. Вы должны использовать родительский элемент в селекторе, который присутствует во время выполнения кода связывания, или вы можете использовать документ или тело.
$(document).ready(function(){
$(document).on("click", ".subUser", function() {
alert("The paragraph was clicked.");
});
});
Преимуществом делегированных событий является то, что они могут обрабатывать события из элементов-потомков, которые будут добавлены в документ позже. Выбрав элемент, который, как гарантируется, будет присутствовать во время присоединения делегированного обработчика события, вы можете использовать делегированные события, чтобы избежать необходимости часто присоединять и удалять обработчики событий, Reference.
Тогда вы можете изменить это:
$(".container").on("click", ".subUser" ,function() {
Когда вы перемещаете свой код из .live()
в .on()
вам необходимо делегировать событие статическому родителю, который был доступен до изменения dom.
поэтому в вашем случае кажется, что в этот момент был доступен класс .container
тогда вы должны делегировать его или вы можете делегировать $(document)
напрямую, потому что документ всегда доступен для делегирования события (this might be little slower
).
проверьте, как вы должны заменить свой код
// Bind
$( "#members li a" ).on( "click", function( e ) {} );
$( "#members li a" ).bind( "click", function( e ) {} );
// Live
$( document ).on( "click", "#members li a", function( e ) {} );
$( "#members li a" ).live( "click", function( e ) {} );
// Delegate
$( "#members" ).on( "click", "li a", function( e ) {} );
$( "#members" ).delegate( "li a", "click", function( e ) {} );
СПРАВКА
http://www.elijahmanor.com/2012/02/differences-between-jquery-bind-vs-live.html