1

我想知道这在 JQuery 中是否可行。

我有一些 Javascript 代码可以动态创建 DOM 对象,以响应用户操作。其中一些 DOM 对象具有特定的结构——容器始终具有相同的“类”属性。

我想做的是,每次创建具有类“X”的 DOM 对象的新实例时,我都希望执行相同的 Javascript 代码。该代码将向该 DOM 对象添加一个“onclick”事件。

不幸的是,我不能只将分配 onclick 的代码放在 document.Ready() 中,因为它绑定到的对象是在 document.Ready() 执行很久之后动态创建的。

JQuery 是否允许您设置将自动绑定到某种类型的 DOM 对象的持久绑定,即使它是动态生成的?

4

4 回答 4

8

我想我已经在 J​​Query 文档中找到了我自己问题的答案,令人惊讶。

http://docs.jquery.com/Events/live#typefn

live( type, fn )

在 jQuery 1.3 中添加:将处理程序绑定到所有当前和未来匹配元素的事件(如单击)。也可以绑定自定义事件。

于 2009-01-27T06:06:59.240 回答
1

你看过一个名为LiveQuery的 jQuery 插件吗?

从 LiveQuery 文档页面:

例如,您可以使用以下代码将点击事件绑定到所有 A 标签,甚至是您可能通过 AJAX 添加的任何 A 标签。

$('a') 
>     .livequery('click', function(event) { 
>         alert('clicked'); 
>         return false; 
>     });

将新的 A 标记添加到文档后,Live Query 将绑定单击事件,无需调用或完成任何其他操作。

于 2009-01-27T06:03:42.057 回答
0

在 jQuery 核心中不可能(正如您可能已经意识到其他答案涉及一些插件)......如果您不一定需要类似的所有功能,这可能是一项非常简单的任务livequery

对于支持它们的浏览器 - 使用 DOM 2 级事件 - 'DOMNodeInserted':

http://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-eventgroupings-mutationevents

于 2011-09-06T03:29:56.837 回答
0

这曾经被“live”、“delegate”或有时“bind”所涵盖。这些现在被替换为“on”,但是这里讨论了一些警告:Javascript event binding persistence

于 2013-11-22T05:16:43.740 回答