.bind不能动态创建id?

时间:2013-05-08 11:16:59

标签: javascript jquery

我正在尝试绑定到动态更改的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 个答案:

答案 0 :(得分:2)

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

  

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

此处的解决方案是使用.on方法。

我们还需要知道要捕获哪个事件,bind将事件绑定到元素,例如“click”。在某一刻,你似乎没有约束任何特定的事件。

答案 1 :(得分:0)

尝试使用“live”方法而不是“bind”。

答案 2 :(得分:0)

使用'on'功能:

用作绑定 - $(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)

答案 3 :(得分: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().

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