如何为通过ajax加载的内容自动绑定插件初始化

时间:2010-04-06 17:04:09

标签: jquery binding live

我正在使用Brandon Aaron的可扩展插件来自动生成我的textareas形式,它工作正常。 问题是我通过ajax加载了很多页面,所以我需要将插件方法重新绑定到通过ajax加载的textareas。

有没有办法像

那样进行这种方法调用
$("textarea").expandable();

通过jQuery中的live()或delegate()。它会让我的代码更清晰。

3 个答案:

答案 0 :(得分:2)

.liveQuery plugin在这里仍然有用,它不是完全被jQuery核心的.live()取代,这里是你的例子如何工作:

$("textarea").liveQuery(function() {
  $(this).expandable();
});

.livequery()实际上会监视新元素,不像.live()侦听事件来冒泡DOM,它们以非常不同的方式运行。

答案 1 :(得分:0)

只有事件可以绑定,必须使用每个新元素调用插件。

[编辑]

事件没有绑定到新元素,事件只是在到元素的路上被冒泡/捕获阶段捕获,允许添加新元素并且仍然可以处理事件。

插件绑定到init构造函数返回的元素集。插件开发人员可以在他们的插件中使用事件委托来捕获在他们所附加的元素范围内添加的新元素(或者他们可以访问文档并冒险与其他插件冲突)。

答案 2 :(得分:0)

我个人想要这样做的方法是让插件在函数中初始化并在ajax加载完成时调用该函数。我的笔记本电池电量低,所以我的语法可能有点偏,但想法就在那里。 / p>

function foo()
{
   $('.classSelector').plugin();
}

$('.eventListener').load('url', function()
{
    foo();
})