所以今天我刚刚遇到了'live()'函数,它将任何未来和过去的元素绑定到您选择的任何事件,例如'onclick'。
现在我每次通过ajax加载新按钮时都需要设置如下按钮...
$('a.btn.plus').button({icons:{primary:'ui-icon-plusthick'}});
$('a.btn.pencil').button({icons:{primary:'ui-icon ui-icon-pencil'}});
$('a.btn.bigx').button({icons:{primary:'ui-icon ui-icon-closethick'}});
所以,每次我使用ajax添加一个新按钮时,不是调用这些行,而是告诉JQuery设置我的按钮有类似的方法ANYTIME我添加新的按钮吗?
感谢您的帮助!
答案 0 :(得分:2)
嗯,不是真的。但是只要Ajax调用成功,就会触发函数.ajaxSuccess()
。所以你可以这样做:
$('body').ajaxSuccess(function() {
$('a.btn.plus').button({icons:{primary:'ui-icon-plusthick'}});
$('a.btn.pencil').button({icons:{primary:'ui-icon ui-icon-pencil'}});
$('a.btn.bigx').button({icons:{primary:'ui-icon ui-icon-closethick'}});
});
但是这将在与类的任何链接上运行,而不仅仅是在新的链接上运行。但是,如果您按时添加它们(即不是一次a.btn.plus
次),您可以使用:last
选择器(a.btn.plus:last
)。
您还可以通过回调函数创建一个函数:
function links() {
$('a.btn.plus').button({icons:{primary:'ui-icon-plusthick'}});
$('a.btn.pencil').button({icons:{primary:'ui-icon ui-icon-pencil'}});
$('a.btn.bigx').button({icons:{primary:'ui-icon ui-icon-closethick'}});
}
并在Ajax调用中:
$.ajax({
//...
success: function(msg){
links();
}
});
这样你就可以将父元素传递给函数,以便只在这个元素中找到链接(所以代码只能在新的链接上工作)。
最后一个选项是生成一个自定义事件,但最后这类似于在你的情况下进行函数调用,所以你获得的不多。
答案 1 :(得分:1)
您也可以在成功功能中使用委托
$("body").delegate("a.btn", "hover", function(){
$(this).toggleClass("hover");
});
答案 2 :(得分:0)
有一个名为livequery的Jquery插件可以满足您的需求。
我喜欢将此插件视为Jquery .live(),但不需要事件('click')等。
您可以在这里找到更多信息//