添加jQueryui按钮以动态添加内容

时间:2010-06-12 14:01:05

标签: jquery ajax jquery-ui

我有一个项目列表,其中包含一些与之关联的jQueryUI按钮。在执行操作(删除项目)后,我想通过ajax重新加载列表。

唯一的问题是当我这样做时,JQueryUI按钮不再显示,只是标准标记。

我知道我可以使用jQuery.live()动态添加点击处理程序等,但如何将jQueryUI button()应用于它们?

2 个答案:

答案 0 :(得分:12)

当您通过ajax重新加载时,请在.button()中调用context(或您正在使用的任何变体),如下所示:

$.ajax({
  //other options..
  success: function(data) {
    //insert elements
    $(".button", data).button();
  }
});

这将仅使用.button()对响应中的元素(不是已在其他位置的页面/ DOM中的其他元素)运行class="button"

你不能真正使用.live()或类似的东西,它依赖于事件冒泡,而不是与添加/删除元素有关......当涉及到插件时,你需要执行它们再次针对您添加的新元素。或者,效率较低但更通用的方法是.livequery() plugin,如下所示:

$(".button").livequery(function() {
  $(this).button();
});

正如我所说,它不是世界上最有效的东西,因为它实际上以各种方式监视DOM的变化。

答案 1 :(得分:0)

您可以使用以下命令重新绑定事件处理程序:

$("#mybutton").unbind().click(function(){ ..do..something... });