Вопрос

Это повторный пост с дополнительной информацией...

Я динамически создаю кучу тегов, добавляя их к элементу, а затем добавляю обработчик кликов...

$(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(), которая у вас есть при создании тегов привязки, будет создано более одного события клика.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top