0

考虑下面的代码,理论上点击事件应该绑定到每个元素,但由于某种原因(我不知道)它只会绑定到最后一个链接。有人有什么想法吗?

$.each(data, function(i,aitem){ 
linkid = 'address'+i;                   
$("#SearchResults").html($("#SearchResults").html()+'<p><a id="'+linkid+'" href="#">'+ aitem.Address +'</a></p>');                    
$('#'+linkid).bind("click", function(){
    otherfunction(i);
    return false;
});

});

4

3 回答 3

1

添加实时点击事件怎么样?

$("a[id^=address]").live("click", function() {
    alert("ran");
    var value = $(this).attr("id").substr(7);
    myFunction(value);
    return false;
});

应该为所有这些链接添加一个点击事件(:

编辑:包括来自达林的小费...

于 2009-09-03T14:14:08.900 回答
1

尝试:

var linkid = ...;
var link = $("<a></a>").attr('id', linkid).attr('href', '#').text(aItem.Address).click(function(){ alert('ran'); return false; });


$('#SearchResults').append(link.wrap("<p></p>"));

这个想法是您希望将点击事件绑定到您正在创建的每个链接,因此只需将其链接到您的创建代码的末尾,并明确说明它。

希望有帮助。

于 2009-09-03T14:20:18.227 回答
0

这是刚接触关闭的人的常见问题。

正确的解决方案是这样做:

$.each(data, function(i,aitem){ 

  linkid = 'address'+i;                                   
  $("#SearchResults").html($("#SearchResults").html()+'<p><a id="'+linkid+'" href="#">'+   aitem.Address +'</a></p>');                                        
  $('#'+linkid).bind("click", function(){
     (function(i){
        otherfunction(i);
        return false;
     }(i));
  });


});
于 2009-09-03T14:19:49.727 回答