我有一些与它们相关联的jQueryUI按钮的项目列表。完成一个动作(删除一个项目)后,我想通过ajax重新加载列表。
唯一的问题是,当我这样做时,JQueryUI按钮不再显示,仅显示标准标记。
我知道我可以jQuery.live()动态添加点击处理程序等,但是如何将jQueryUI button()应用于它们?
jQuery.live()
button()
通过ajax重新加载时,请.button()在该上下文中调用(或使用的任何变体),如下所示:
.button()
$.ajax({ //other options.. success: function(data) { //insert elements $(".button", data).button(); } });
这将 仅在响应中的*.button()元素上运行(而不是其他已在页面/ DOM中的其他元素)。 *class="button"
class="button"
您不能.live()在这里真正使用或依赖事件冒泡,或与添加/删除元素没有任何关系……当涉及到插件时,您需要针对添加的新元素再次执行它们。或者,效率较低但更通用的方法是.livequery()plugin,其用法如下:
.live()
.livequery()
$(".button").livequery(function() { $(this).button(); });
正如我所说,这并不是世界上最高效的事情,因为它实际上以各种方式监视DOM的变化。