0
function OnIframeContentLoads(){        
  $("#iframe")
    .contents()
    .find(".text")
    .live({ 
      click: OpenSingleImageEditor, 
      mouseover: function () { HighLight(this) }, 
      mouseout: function () { OffLight(this);} 
    });    
}   

当我用 .bind() 绑定事件时,它的工作原理是 live(),就像上面的代码一样,它不起作用。这里有什么问题?

4

3 回答 3

5

这是一个已知问题.live,请.on改用

从文档

不支持链接方法。例如, $("a").find(".offsite, .external").live( ... ); 无效且无法按预期工作。

$("#iframe").on('click', '.text', function(){ ... });    
于 2012-04-23T13:27:11.480 回答
1

我注意到 .live 有一些非常具体的约束不适用于 .bind。特别是,它不适用于任何类型的缓存选择器。我认为这可能适用于 .find()/.contents()。

试试这个:

$("#iframe .text").live({ click: function(){ console.log('clicked') } })
于 2012-04-23T13:27:31.563 回答
0

您将要使用 jquery on() 方法:

$(element).on( events [, selector] [, data], handler(eventObject) )

http://api.jquery.com/on/

.on() 方法将事件处理程序附加到 jQuery 对象中当前选定的元素集。从 jQuery 1.7 开始,.on() 方法提供了附加事件处理程序所需的所有功能。有关从旧 jQuery 事件方法转换的帮助,请参阅 .bind()、.delegate() 和 .live()。要删除与 .on() 绑定的事件,请参阅 .off()。要附加仅运行一次然后自行删除的事件,请参阅 .one()

于 2012-04-23T13:29:14.620 回答