onblur和onclick冲突解决方法

Posted on 2012-11-21 20:14  真实的幻术师  阅读(821)  评论(0编辑  收藏  举报
onclick 相当于 在某一元素上触发了 onmousedown(即鼠标按下)后 任然在该元素 上 触发了onmouseup(鼠标按键弹起)才触发 onclick; 

有以下情况: 对于某元素A 绑定了 click事件 并同时对另外 的元素B 绑定onblur事件, 这时候,当在A上mousedown后,即触发了B元素的onblur事件,该事件函数执行后的效果是 改变了DOM结构,使得鼠标已经不在在元素A之上。 这时鼠标任然没有mouseup ,在mouseup之后,以为会触发click事件,实际上却不能触发。
 
测试代码:
<script src="jquery.min.js">
</script>
<script>
function foo1()
{
     //$("div").delay(400).hide();
     $('p').text($('p').text()+"input,");
}
function foo2()
{
     //alert("li");
     $('p').text($('p').text()+"li,");
}
</script>
<input type="text" onblur="javascript:foo1();">
</input>
<div>
<li onmousedown="javascript:foo2();">AAAAA</li>
<li onmousedown="javascript:foo2();">BBBBB</li>
<li onmousedown="javascript:foo2();">CCCCC</li>
</div>
<p>
</p>

Copyright © 2024 真实的幻术师
Powered by .NET 8.0 on Kubernetes