2010-04-09 4 views
3

У меня есть код, который отлично работает в FF, но не в IE. Я прочитал другие сообщения о том, что JQuery Live-метод не поддерживает события изменения, но я использую событие click. Вот мой код, он находится внутри $ (документ) .ready (функция():..JQuery live не работает в IE

$("a").live("click", function(e) { 
     alert("link clicked"); 
     //do stuff 
    }); 

Если FF предупреждение срабатывает, но не в IE Когда я использую $ («а») нажмите это работает отлично, проблема в том, что мне нужна функция, которая будет применяться к ссылкам, которые не существуют при первой загрузке страницы (они будут созданы через вызовы ajax на более позднем этапе).

Есть ли у меня какие-либо опции здесь . Мы используем Jquery-1.4.1.min.js.

заранее спасибо

ответ

2

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

$('#link_container_id').delegate('a', 'click', function(e){ 
    alert('link clicked'); 
}); 

.delegate() будет смотреть, если есть какое-либо событие (нажмите в вашем случае) бурлит, если так оно проверяет цель и сравнивает это «а» в вашем случае. Должен работать, но непроверен.

+0

ну и контекст - это целая страница. Могу ли я указать это для всего тела страницы? – Kaskade

+0

он должен, например, $ (document.body) .delegate(). – jAndy

+1

@jAndy - Это почти то же самое, что использование '.live()', '$ (document)' будет * точно * одинаково, но не уверен, как это разрешило бы проблему барботажа, которая не происходит. –

1

Элементы должно быть в DOM на момент присоединения события live. Если позже они будут воссозданы (например, в обратном вызове ajax), вам не нужно снова подключать обработчик событий. Если элементы не существуют при загрузке страницы, вы можете присоединить живое событие, когда оно загружено, но если вы это сделаете, то, вероятно, вам больше не понадобится событие live, поскольку вы можете напрямую подключить событие click.

+1

Я вообще не слежу за тобой. Я работаю над большим проектом, и у меня нет контроля над всем кодом. Мне нужен метод, который нужно называть щелчком каждого «а». Когда я использую событие click, некоторые из ссылок (те, которые загружаются после загрузки страницы, потому что они занимают много времени) не подхватываются щелчком jquery. Когда я использую live, он работает, но не в IE. Я должен использовать jquery для перехвата всех ссылок, поскольку у меня нет доступа к коду, содержащему ссылку. Надеюсь, это имеет смысл – Kaskade

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