2014-08-28 2 views
0

В старых дней, мы привыкли использовать JQuery-х .live() (http://api.jquery.com/live/) связываться с будущими событиями, если контент был перезагружен с помощью AJAX, например.ли Jquery О работе для будущих событий

С .live() в настоящее время устарел (и удален), jQuery предлагает использовать .on() (http://api.jquery.com/on/). Они не заявляют, что это работает для будущих событий. Кстати,, он не работает над элементами, перезагружаемыми через AJAX.

Мой вопрос; делает .on() работы, или он должен работать для будущих событий, так, как это делает .live()?

Я звоню .on() следующим образом:

$j('#header-cart').on('click', '.skip-link-close', function(e) { 
    ... // change the world 
}); 

Спасибо.

+0

Как вы называете 'on'? –

+0

есть. без примера мы не сможем помочь вам дальше – gulty

+1

Вы имеете в виду, что вы создаете элемент заголовка через ajax, но хотите запустить прослушиватель до его загрузки? – Kinnza

ответ

1

Да это делает, он работает в очень похожим образом, чтобы жить с той разницей, что вы не связать это событие с будущего элемента, но к нижележащему статического элемента. .on использует распространение/барботирование событий.

В качестве примера

<div class="static-element"> 
    <div> 
     <!-- Content inserted from ajax call below --> 
     <p class="volatile-element">Example content</p> 
    </div> 
</div> 

С .on связываются со статическим элементом и целевым летучего элемента.

$(".static-element").on("click", ".volatile-element", function(event) { ... }); 
1

Я чувствую, что вы вызываете неправильный код $.on! Да, это замена .live(), что было потрясающе.

Имейте статический элемент: #static-div и динамический контент, скажем .dynamic-link, внутри этого <div>. Вам нужно позвонить .on() таким образом:

$("#static-div").on("click", ".dynamic-link", function(e){ 
    e.preventDefault(); 
}); 

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

$(document).on("click", ".dynamic-link", function(e){ 
    e.preventDefault(); 
}); 
2

Вам нужно прикрепить событие .on() по-другому при замене с .live()

Для живого

$('#ele_id').live('click', function() { 
    // event code 
}); 

Для на:

$(document).on('click', '#ele_id', function() { 
    // event code 
});