Javascript Jquery。单击事件不';变更事件后,您是否无法工作?
具有此示例代码:Javascript Jquery。单击事件不';变更事件后,您是否无法工作?,javascript,jquery,alert,Javascript,Jquery,Alert,具有此示例代码: <input type="text" id="changeid"> <a href="#" id="clickb">click</a> <script> $('#clickb').on("click", function(event){ alert(1); return false; }); $('#changei
<input type="text" id="changeid">
<a href="#" id="clickb">click</a>
<script>
$('#clickb').on("click", function(event){
alert(1);
return false;
});
$('#changeid').on("change", function(event){
alert(2);
return false;
});
</script>
$('#clickb')。在(“click”上,函数(事件){
警报(1);
返回false;
});
$('#changeid')。关于(“更改”,函数(事件){
警报(2);
返回false;
});
当将内容放入文本字段并立即单击链接时,只会触发onchange事件,而不会触发link click事件。
为什么呢?
似乎更改事件正在阻止单击事件?它被
警报阻止。将alert
更改为console.log
您将发现两个事件全部触发
$('#clickb').on("click", function(event){
console.log(1);
return false;
});
$('#changeid').on("change", function(event){
console.log(2);
return false;
});
当您编辑输入,然后单击链接时,内部会发生以下情况
你开始点击“链接”。尚未生成任何事件(甚至没有鼠标向下),因为首先浏览器将执行一些清理工作:
输入失去焦点,将引发模糊事件
输入引发了一个change
事件,因为它引发了一个blur
且值已更改
您的更改
事件回调将打开一个警报(2)
新窗口出现后,文档失去焦点
链接将永远不会遇到单击
解决方案是不使用警报
(如xdazz建议的)。只有在元素模糊后才会触发onchange事件。因此,当您键入一些文本并首先单击链接时,文本字段中的元素会模糊。处理更改事件的最佳方法是使用onkeyup事件跟踪文本字段上的更改。使用此选项
$("#changeid").live('change', function () ...
带着同样的问题来到这里,但前提条件不同。值得注意的是,当使用脚本调试器突出显示更改并单击事件时,也有相同的解释