javascript - 使用 $.contains 查找一个元素是否包含另一个具有焦点的元素

标签 javascript jquery

我有以下 JQuery,它是双击表格行的处理的一部分。如果该行包含一个具有事件焦点的输入框,我想退出该函数,否则我想继续:

$("#foo tbody tr").dblclick(function() {
        if ($.contains( $(this)[0], document.activeElement)) {
            return;
        }
        // otherwise, do something with the row
    });

但是,它不起作用:条件显然总是返回 false(activeElement 不在双击的行中),即使该行确实包含带焦点的输入框也是如此。

怎么了?

编辑:我在这里所做的是在双击时将行从一个表移动到另一个表。但是每一行都包含一个单元格,其中包含可以单击以对其进行编辑的文本(当用户单击一次单元格文本时,它会变成一个输入框)。我发现,如果用户正在编辑此单元格但双击该行,则会发生移动,我想避免这种情况。

最佳答案

您可以向具有焦点的元素添加一个类,并在您的双击事件中检查它。然后,您可以在需要时删除该类。 http://jsfiddle.net/uq0ga86v/5/

$('input').focus(function(){
    $('input').removeClass('focus');
    $(this).addClass('focus');
})
$("#foo tbody tr").dblclick(function() {    
        if ($(this).find('input.focus').length != 0) {
            alert('g');
        }
        // otherwise, do something with the row
       $(this).find('input.focus').removeClass("focus");
});

关于javascript - 使用 $.contains 查找一个元素是否包含另一个具有焦点的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31188406/

相关文章:

javascript - 在当前工具提示文本 JQuery 旁边 append 或添加新文本

javascript - jQuery:仅打印数组中的一个结果

javascript - 通过 jQuery 设置显示属性 - 在 Chrome 中不起作用?

javascript - Angular - 从刚刚加载的模板访问 DOM 元素

javascript - HTML5(包括 Javascript)游戏, Canvas 设置错误

jquery - 如何使用 XMLHttpRequest 将数组发送到服务器

jquery - 点击背景滑动?

动画函数中的 JavaScript 错误

javascript - 如何在node.js应用程序中的mongodb中按层次顺序插入数据?

javascript - 如果页面大小有一定限制,如何将三个 div 对齐并让其中一个消失?