2

我正在尝试绑定到动态更改的 id ,该代码适用于静态 id 但一旦我用于动态绑定它就不会绑定。

$("#placeholder"+id).bind("\""+"plothover"+id+"\"", function (event, pos, item) {--some code here --}

如果以这种方式使用它可以正常工作

$("#placeholder"+id).bind("plothover", function (event, pos, item) {--some code here --}
4

4 回答 4

2

这是由于绑定不适用于动态元素,取自 jQuery 站点:

从 jQuery 1.7 开始,.on() 方法是将事件处理程序附加到文档的首选方法。对于早期版本,.bind() 方法用于将事件处理程序直接附加到元素。处理程序附加到 jQuery 对象中当前选定的元素,因此这些元素必须存在于调用 .bind() 的位置。有关更灵活的事件绑定,请参阅 .on() 或 .delegate() 中有关事件委托的讨论。

这里的解决方案是使用.on方法。

我们还需要知道你想捕捉哪个事件,bind就是将一个事件绑定到一个元素上,比如“click”。目前,您似乎没有绑定到任何特定事件。

于 2013-05-08T11:28:00.173 回答
0

使用“开”功能:

用作绑定 -$(el).on('event name',callback);

用作现场 -$(el parent).on('event name','element selector',[may be some data],callback)

命名空间 -$(el).on('namespace.event',callback)

数据 -$(el).on('event',{col: varCol},callback)

于 2013-05-08T11:33:32.630 回答
0

如果您的元素尚未创建.bind()将无法工作!你必须使用.live()

http://api.jquery.com/live/

它在父元素上绑定一次事件,然后您从那里处理所有子事件。这是正确的方法,如果您没有正确删除动态元素,那么您在父级上只有一个事件可以防止内存泄漏。

哎呀:

As of jQuery 1.7, the .live() method is deprecated. Use .on() to attach event handlers. Users of older versions of jQuery should use .delegate() in preference to .live().

但它仍然做同样的事情:)

于 2013-05-08T11:37:41.350 回答
0

尝试包含“live”方法而不是“bind”。

于 2013-05-08T11:24:15.547 回答