m.e*_*son 8 javascript jquery opera
我有以下jQuery适用于除 Opera 之外的所有主流浏览器:
jQuery(document).ready(function () {
jQuery("#GetResults").live("click", function(e){
e.preventDefault(); //Opera doesn't execute anything here
});
};
Run Code Online (Sandbox Code Playgroud)
单击以下链接时应该触发:
<a id="GetResults" href="Folder/File/javascript:void(0);">Get Results</a>
Run Code Online (Sandbox Code Playgroud)
只有Opera忽略了这个.有任何想法吗?
编辑:
我刚刚发现如果我用.bind()代替.live(),一切都按预期运行.我找不到任何与Opera中的.live()错误相关的文档,它确实在jsFiddle 中工作,它指向环境的东西.可能导致这种行为的原因是什么?
这需要澄清.上面的答案是正确的,但没有人清楚地解释你的问题来自哪里.
事实上,我认为您可能也可以在其他浏览器中重现该问题.这是因为.live工作原理:
它与事件绑定document并等待特定事件冒泡到那里.然后它检查event.target你是否想要处理.*
如果单击链接元素,则在事件冒泡到足以触发代码之前,浏览器很可能会转到新页面.在具有大量HTML和事件处理程序的应用程序中,所有浏览器都应该有问题.在这种情况下,Opera只是开始显示新页面并破坏前一个更快的页面.它实际上取决于特定情况而不是浏览器.例如:如果在连接到站点时网络延迟较高,则可能不会发生这种情况.
为了防止对a你必须使用的元素进行默认操作,.bind就像过去一样;)当一个eveloper必须知道他用AJAX加载什么并将新事件绑定到回调中时.
*还有更多,.live更复杂.我刚才描述了这里需要什么.
使用以下方法附加处理程序时会发生什么
$ (something).bind ("click", function (e) {
// do something
})
Run Code Online (Sandbox Code Playgroud)
您还可以尝试使用.click()方法附加处理程序.
| 归档时间: |
|
| 查看次数: |
831 次 |
| 最近记录: |