Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Jquery。单击事件不';变更事件后,您是否无法工作?_Javascript_Jquery_Alert - Fatal编程技术网

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 () ...
    

    带着同样的问题来到这里,但前提条件不同。值得注意的是,当使用脚本调试器突出显示更改并单击事件时,也有相同的解释