onclick 相当于 在某一元素上触发了 onmousedown(即鼠标按下)后 任然在该元素 上 触发了onmouseup(鼠标按键弹起)才触发 onclick;
有以下情况: 对于某元素A 绑定了 click事件 并同时对另外 的元素B 绑定onblur事件, 这时候,当在A上mousedown后,即触发了B元素的onblur事件,该事件函数执行后的效果是 改变了DOM结构,使得鼠标已经不在在元素A之上。 这时鼠标任然没有mouseup ,在mouseup之后,以为会触发click事件,实际上却不能触发。
有以下情况: 对于某元素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>
</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>