Sau*_*aul 5 javascript jquery dom
出于某种原因,jQuery(1.6.2)无法将鼠标悬停处理程序附加到Flash对象.
有趣的是,getElementById().onmouseover = ...按预期工作.
// fail
$('#content-banner').mouseover(function () {alert(1)});
// success
document.getElementById("content-banner").onmouseover = function (evt) { alert(3); };
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请参阅jsFiddle上的实例.
什么阻止jQuery附加处理程序?
更新
根据ShankarSangoli的live()建议,可以快速解决问题.但问题仍然存在.为什么jQuery无法附加处理程序?
She*_*epy 14
jQuery的不支持data()的<applet>,<embed>和<object>.由于jQuery的事件处理程序堆栈依赖于data()工作,因此调用mouseover()对象将失败.
所以,只要你不使用jQuery的事件处理你就可以了:
var banner = $('#content-banner');
banner.live ( 'mouseover', ... ); // works, becuse live hooks to document not to banner
banner[0].onmouseover = ... ; // works
banner[0].addEventListener('mouseover', ... , false); // also works
Run Code Online (Sandbox Code Playgroud)
如果您深入研究代码,您会发现对象有一个异常classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000',即Flash,但classid仅适用于IE.因此,简短的回答是避免在对象上使用jQuery事件.
| 归档时间: |
|
| 查看次数: |
1440 次 |
| 最近记录: |