1、blur事件:
当元素失去焦点时触发,表单事件,不可冒泡。
eg:
$(document).ready(function(){
$(document).blur(function(){
alert("Click,too!");
});
$("input").blur(function(){
alert("Click!");
});
});
输出:Click!
当点击元素时触发,所有元素均有的事件,可冒泡。
$(document).ready(function(){
$(document).click(function(){
alert("Click,too!");
});
$("input").click(function(){
alert("Click!");
});
});
输出:Click!和Click.too!
3、blur与click冲突
eg:
$(document).ready(function(){
$("button").click(function(){
alert("Click!");
});
$("input").blur(function(){
alert("Blur!");
});
});
输出:Blur!
原因:JavaScript为单线程,同一时间只能执行处理一个事件。blur事件会优先于click事件执行。
解决方法一:
延迟blur事件,让click事件先执行。
$(document).ready(function(){
$("button").click(function(){
alert("Click!");
});
$("input").blur(function(){
setTimeout(function(){
alert("Blur!");
}, 300);
});
});
输出:Click!和Blur!
解决方法二:
click事件改为mousedown事件,让其先执行。
$(document).ready(function(){
$("button").mousedown(function(){
alert("Click!");
});
$("input").blur(function(){
alert("Blur!");
});
});
输出:Click!和Blur!
mousedown:鼠标按键被按下时触发。
mouseup:松开鼠标按键时触发。
eg:
<button>提交</button>
<div id="result"></div>
<script>
$(document).ready(function(){
$("button").mousedown(function(){
$("<span>Mousedown!</span>").appendTo($("#result"));
});
$("button").mouseup(function(){
$("<span>Mouseup!</span>").appendTo($("#result"));
});
$("button").click(function(){
$("<span>Click!</span>").appendTo($("#result"));
});
});
</script>
输出:Mousedown!Mouseup!Click!
结论:执行顺序为mousedown事件-->mouseup事件-->click事件