Jquery 绑定单击和活动单击

Jquery 绑定单击和活动单击,jquery,Jquery,为什么这个代码有效 $(文档).ready(函数(){ var html=''; var$div=$(html); $div.find('a').bind('click',function(){//注意bind 警报(“Hi”); }); $('#test')。追加($div); }); 但是使用.bind('click'替换为.live('click')的相同代码不起作用?为什么 谢谢。也许您不应该将$(document).替换为嵌套的.live('click')。问题的原因可能是文档尚未完

为什么这个代码有效

$(文档).ready(函数(){
var html='';
var$div=$(html);
$div.find('a').bind('click',function(){//注意bind
警报(“Hi”);
});
$('#test')。追加($div);
});
但是使用
.bind('click'
替换为
.live('click'
)的相同代码不起作用?为什么


谢谢。

也许您不应该将$(document).替换为嵌套的.live('click')。问题的原因可能是文档尚未完全加载,因此绑定无法工作

因此,请尝试以下方法:

$(document).ready(function() {
  $('mybutton').live('click', function(){ ... });
}
说:

不支持使用DOM遍历方法查找要发送的元素 而是应该始终调用.live()方法 直接在选择器后面


因此,如果您将
$div.find('a').bind('click'
)更改为
$('#test a').live('click'
),它就会工作。

您可以像这样使用委托:

var $div = $('<div><a href="javascript:">click me</a></div>');
$div.delegate('a', 'click', function() {
    alert('Hi');
});
$('#test').append($div);
var$div=$('');
$div.delegate('a','click',function(){
警报(“Hi”);
});
$('#test')。追加($div);

您可以在特定html元素上使用.bind()(此处:$div>a),但.live()函数不同:它适用于相同类型的元素(如$($div>a))


因此,您可以在
$('div>a')中更改
$div.find('a').bind('click'),
).live('click'),

关于[jQuery.bind()与.live()与.delegate()与.on()的区别]的伟大文章:

您的意思是将$(文档)替换为.live('click')?我喜欢它,但你犯了与OP相同的错误:你使用
$div
就像它是全局的一样,但没有任何东西表明它是全局的。不确定它有多大不同?但我还是改变了它。
var $div = $('<div><a href="javascript:">click me</a></div>');
$div.delegate('a', 'click', function() {
    alert('Hi');
});
$('#test').append($div);