我有一个代码在页面加载时绑定点击操作,它是一个链接。当我点击它时,它发送ajax请求并用jquery append()函数替换某些div中的内容。这个新内容有一个链接,我需要为它们绑定一些动作,但我不能..绑定我认为没有用,因为jquery追加不更新DOM树。我怎么能得到一个后期绑定?
答案 0 :(得分:14)
有3个功能可以做到这一点:
$(selector).live(events, data, handler);
- jQuery 1.3+ - 版本弃用:1.7,已移除:1.9 (reference)$(document).delegate(selector, events, data, handler);
- jQuery 1.4.3+ - 从jQuery 1.7开始,.delegate()已被.on()方法取代。(reference)< / LI>
$(document).on(events, selector, data, handler);
- jQuery 1.7+ - 首选(reference) 通常建议使用on()
,并且它的使用很简单,可能是首选方式。
document
)。以下是一些示例代码:
// Make sure the DOM is ready
$(function() {
// Bind the click event to the function
$(document).on("click", "a.class", function(event) {
// Put your code here.
});
});
答案 1 :(得分:11)
现在可以通过使用jQuery的live()事件来获得后期绑定:
$('a.my-links-class').live('click', function() {
// do your link action here
});
答案 2 :(得分:5)
对于使用Jquery更高版本的任何人,他们可以使用 .on()事件,它的工作方式非常相似。
答案 3 :(得分:4)
.live
中的方法JQuery 1.9
已被弃用。现在你可以这样做:
$("body").on("click", ".classname", function() { ... })
答案 4 :(得分:2)
您需要使用jQuery的live
函数,该函数将事件绑定到与选择器匹配的所有元素,无论它们何时被创建。
答案 5 :(得分:2)
您可以使用jQuery 1.3 +的$().live(event, function)
函数。 $("a").live("click", myClickFunc)
将绑定myClickFunc
,就像$("a").click(myClickFunc)
或$("a").bind("click", myClickFunc)
一样,但事件将被绑定为“实时”,因此在该函数调用之后添加到DOM的元素也将约束。
您可以使用$().die()
删除实时绑定事件。
有关$()。live的更多信息,请参阅the documentation for it。
另一种选择是使用一个函数来绑定给定某个上下文的元素(使用$ selector函数很少使用的第二个参数):
function myBindEvents(context) {
$("a", context).click(myClickFunc);
}
并在使用AJAX更新元素时调用它:
$("<div>").load("...", "...", function(){myBindEvents(this);});
希望这会有所帮助。 :)
答案 6 :(得分:0)
在我的情况下,我正在使用js库,因为我有元素变量,并且代码就像
$(element).click(function(){
//some action
});
但这不适用于我后来的绑定元素。 所以我终于使用了核心js click事件
element.addEventListener('click', function() {
//My some action
}, false);