我正在尝试绑定到动态更改的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 --}
答案 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()
它在父元素上绑定事件一次,然后从那里处理所有子事件。这是正确的方法,并且如果您没有正确删除动态元素,那么您在父级上只有一个事件可以防止内存泄漏。
哎呀:
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().
但它仍然在做同样的事情:)