jQuery的。更改事件后,click事件不起作用?

时间:2012-09-13 10:13:58

标签: javascript jquery alert

拥有此示例代码:

<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>

将某些内容放入文本字​​段并立即单击该链接时,仅触发onchange事件,但不会触发链接单击事件。 这是为什么? 似乎更改事件阻止了click事件?

4 个答案:

答案 0 :(得分:11)

alert阻止。将alert更改为console.log您会发现两个事件全部被解雇。

The demo.

$('#clickb').on("click", function(event){
    console.log(1);
    return false;
});

$('#changeid').on("change", function(event){
   console.log(2);                             
   return false;
});​

答案 1 :(得分:4)

当你编辑输入然后点击链接时,内部会发生以下内容

  1. 您开始点击“链接”。尚未生成任何事件(甚至没有生成),因为首先浏览器将执行一些清理工作:
  2. 输入失去焦点并将引发blur事件
  3. 输入引发change事件,因为它引发了blur并且值已更改
  4. 您的change事件回调会打开alert(2)
  5. 自新窗口出现以来,文件失去了重点
  6. 该链接永远不会遇到click
  7. 解决方案不是使用alert(正如xdazz提议的那样)。

答案 2 :(得分:1)

使用此

$("#changeid").live('change', function () ...

答案 3 :(得分:0)

onchange事件仅在元素模糊后触发。因此,当您键入一些文本并首先单击链接时,元素在文本字段上模糊。使用onkeyup事件处理更改事件的最佳方法是跟踪对文本字段所做的更改。