我有一个项目列表,其中包含一些jQueryUI按钮。在执行操作(删除项目)后,我想通过ajax重新加载列表。
唯一的问题是,当我这样做时,JQueryUI按钮不再显示,只是标准标记。
我知道我可以用 jQuery.live()
用于动态添加点击处理程序等,但如何应用jQueryUI button()
给他们?
我有一个项目列表,其中包含一些jQueryUI按钮。在执行操作(删除项目)后,我想通过ajax重新加载列表。
唯一的问题是,当我这样做时,JQueryUI按钮不再显示,只是标准标记。
我知道我可以用 jQuery.live()
用于动态添加点击处理程序等,但如何应用jQueryUI button()
给他们?
当您通过ajax重新加载时,请致电 .button()
(或者你正在使用的任何变体) 上下文, 喜欢这个:
$.ajax({
//other options..
success: function(data) {
//insert elements
$(".button", data).button();
}
});
这将运行 .button()
在元素上 只在回应中 (不是已经在其他地方的页面/ DOM中的其他人) class="button"
。
你不能真正使用 .live()
或者类似的东西,它依赖于事件冒泡,而不是与添加/删除元素有关......当涉及到插件时,你需要再次针对你添加的新元素执行它们。或者,效率较低但更通用的方法是 .livequery()
插入,像这样使用:
$(".button").livequery(function() {
$(this).button();
});
正如我所说,它不是世界上最有效的东西,因为它实际上以各种方式监视DOM的变化。
当您通过ajax重新加载时,请致电 .button()
(或者你正在使用的任何变体) 上下文, 喜欢这个:
$.ajax({
//other options..
success: function(data) {
//insert elements
$(".button", data).button();
}
});
这将运行 .button()
在元素上 只在回应中 (不是已经在其他地方的页面/ DOM中的其他人) class="button"
。
你不能真正使用 .live()
或者类似的东西,它依赖于事件冒泡,而不是与添加/删除元素有关......当涉及到插件时,你需要再次针对你添加的新元素执行它们。或者,效率较低但更通用的方法是 .livequery()
插入,像这样使用:
$(".button").livequery(function() {
$(this).button();
});
正如我所说,它不是世界上最有效的东西,因为它实际上以各种方式监视DOM的变化。
您可以使用以下命令重新绑定事件处理程序:
$("#mybutton").unbind().click(function(){ ..do..something... });