jquery головоломка по событию щелчка
Вопрос
Это повторный пост с дополнительной информацией...
Я динамически создаю кучу тегов, добавляя их к элементу, а затем добавляю обработчик кликов...
$(document).ready(function(){
// ... code to append <a> tags to nav div
$("#nav a").click(function(event){
alert('Clicked '+event.target.id);
return false;
});
});
Если в результате этого у меня будет 10 тегов и я нажму первый, я получу 10 (ДЕСЯТЬ!) оповещений, но все они будут показывать идентификатор тега, который я на самом деле нажал.
(Если я нажму пятый тег, да, я получу 5 оповещений — все с идентификатором пятого тега...)
Что тут происходит?Это потому, что я динамически создавал теги?Есть ли способ избежать этого?
Вот код, который создает теги a
$(document).ready(function(){
$.get('_7day-M2.5.xml', {}, function(xml){
$(xml).find('entry').each(function(i){
$('#nav').append('<a href="#" id="'+i+'">'+$(this).find("title").text()+"</a><br/>");
});
});
});
Вывод Firebug не выявил ничего странного.
Есть идеи, что здесь происходит?
Спасибо
Решение
Попробуйте использовать $("#nav > a") в качестве селектора вместо $("#nav a").Если это не сработает, просто убедитесь, что вы привязываете событие щелчка вне любых циклов, которые могут у вас возникнуть.Например, если у вас есть привязка события клика внутри $.each(), которая у вас есть при создании тегов привязки, будет создано более одного события клика.