javascript - 如何在显示覆盖的更改事件后捕获点击事件?

标签 javascript jquery

我在 jsfiddle 中创建了我的代码的独立版本:http://jsfiddle.net/yn183v6e/5/

$(document).ready(function() {
    $('body').on('click', 'span', function() {
       $('#content').append('Click on span<br/>'); 
    });
    $('#input').on('change', 'input', function(e) {
        $('#content').append('Change<br/>'); 
        $('p').show();
    });
    $('body').on('click', 'p', function(e) {
        $(this).hide();
    });
    $('body').on('click', function(e) {
       $('#content').append('Click on body<br/>'); 
    });
});

显示覆盖的输入框上有一个change事件。当您在输入框中键入内容,然后单击“开始”按钮时,会触发更改事件并丢失单击事件。如果叠加层不存在,则可以很好地捕获点击事件。有了覆盖,点击事件就丢失了。

我将点击事件附加到正文、叠加层和按钮,但未捕获点击事件。

输入框上的覆盖和更改事件需要执行当前业务规则。如何捕获点击事件?

最佳答案

使用 mousedown 事件使其在 input 上的 change 事件之前触发

工作样本:http://jsfiddle.net/yn183v6e/7/

$(document).ready(function() {
    $('body').on('mousedown', 'span', function() { // Changed click event for mousedown event
       $('#content').append('Click on span<br/>'); 
    });
    $('#input').on('change', 'input', function(e) {
        $('#content').append('Change<br/>'); 
        $('p').show();
        debugger;
    });
    $('body').on('click', 'p', function(e) {
        $(this).hide();
    });
    $('body').on('click', function(e) {
       $('#content').append('Click on body<br/>'); 
    });
});

关于javascript - 如何在显示覆盖的更改事件后捕获点击事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25732334/

相关文章:

javascript - 在 foreach 循环中调用用户函数

javascript - AJAX调用返回数据但不提示下载

javascript - 使用 Jquery 或 Javascript 动态计算字段的划分

javascript - 如何使用 Jquery 重新加载特定的 div?

Jquery数据表列标题垂直滚动的宽度问题

javascript - 通过 JXA 通过消息发送 SMS 时,克服错误 : Expecting object specifier. 参数没有对象说明符的更优雅的方法是什么

javascript - 在 createJS/easelJS 中围绕另一个对象旋转一个对象

javascript - 单击按钮打开带有闪烁光标的输入字段

javascript - jquery遍历表单的一部分

javascript - 如何对 jquery fllot 行 1 by 1 进行动画处理