jQuery 事件 - 忽略对点击的关注

标签 jquery html

我制作了一个包含多个使用 contenteditable 属性的元素的页面。我添加了这样的功能,即当您跳转到下一个元素时,会自动选择文本(使用我在 this answer 上找到的一个小插件)。

但是如果您切换到屏幕外的元素,窗口不会自动滚动以显示该元素(至少在 Chrome 中是这样)。所以我使用了 focus 事件和 .animate() 来跳转到该元素。

现在我的问题是,我不想在点击而不是跳转到该元素时跳转到该元素。当元素已经在 View 中时会很烦人,但当您单击它时会跳转到页面顶部。这是 a fiddle to look at .

这是我正在使用的代码:

$.fn.selectText = function(){
    var doc = document;
    var element = this[0];
    if (doc.body.createTextRange) {
        var range = document.body.createTextRange();
        range.moveToElementText(element);
        range.select();
    } else if (window.getSelection) {
        var selection = window.getSelection();        
        var range = document.createRange();
        range.selectNodeContents(element);
        selection.removeAllRanges();
        selection.addRange(range);
    }
};

$(document).on('focus', '.content', function(e) {
    var top = $(this).offset().top - 100;
    $(this).selectText();
    $('body').animate({
         scrollTop: top
     }, 25);
    return true;
});

我已经尝试使用 stopPropagation()preventDefault() 并更改绑定(bind)顺序但无济于事。在单击而不是选项卡上忽略此焦点事件的最佳方法是什么?或者有没有办法恢复原来的自动滚动功能?

最佳答案

使用 jQuery 的 .stopPropagation()在您的点击事件上:

$('.content').click(function(e){
    e.stopPropagation();
});

编辑:我已经更新了 jsFiddle使用 .mouseenter().mouseleave() 设置忽略标志。

关于jQuery 事件 - 忽略对点击的关注,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17157117/

相关文章:

javascript - 对象不支持此属性或方法 IE8 hasclass 方法

jQuery 和 AJAX 或服务器发送的事件

javascript - 在页面加载时激活在线幻灯片放映

html - Ionic 4 选项卡在父元素上切割

html - Flexbox 内容显示不正确

javascript - 使用 Play Framework 和 JW Player 嵌入视频

javascript - 在测验中创建一个像视频游戏一样的生活系统

javascript - iScroll 中可以同时使用 Probe 和 Zoom 功能吗?

javascript - 无法使用 jquery ajax 从 json 获取数据

javascript - Google Maps V3 Circle 和我创建的 Circle 不匹配