【问题标题】:Add event listener to multiple elements excluding one将事件侦听器添加到除一个之外的多个元素
【发布时间】:2013-10-09 03:35:45
【问题描述】:

我正在使用 phonegap 和 Zepto 开发一个移动应用程序,但我正在努力解决一个问题。我在左右两侧有侧边菜单,通过滑动显示。但是,在我的主容器中,我有一个可以滑动的小滑块。我的问题是,一旦我完成滑动滑块容器,就会调用侧边菜单的滑动事件并显示菜单。有办法防止这种行为吗?

代码:

Zepto(document).on('swipeRight', function(){
    if($('#search-container').hasClass('back-left'))
        handleSideSearchMenu();
    else if(!$(showLeft).hasClass('active'))
        MyObj.handleSideMenu(showLeft);
}).on('swipeLeft', function(){  
    if($('#search-container').hasClass('to-right') && !$(showLeft).hasClass('active'))
        handleSideSearchMenu();
    else if($(showLeft).hasClass('active'))
        MyObj.handleSideMenu(showLeft);
});

【问题讨论】:

    标签: javascript jquery jquery-events zepto


    【解决方案1】:

    你可以这样做...

    Zepto(document).on('swipeRight', function(e) {
    
        if ($(e.target).is(**slider-container**)) return;
    
        if($('#search-container').hasClass('back-left'))
            handleSideSearchMenu();
        else if(!$(showLeft).hasClass('active'))
            MyObj.handleSideMenu(showLeft);
    
    }).on('swipeLeft', function(e){  
    
        if ($(e.target).is(**slider-container**)) return;
    
        if($('#search-container').hasClass('to-right') && !$(showLeft).hasClass('active'))
            handleSideSearchMenu();
        else if($(showLeft).hasClass('active'))
            MyObj.handleSideMenu(showLeft);
    });
    

    在上面的代码中,e.target 是触发事件的 DOM 元素,因此您可以使用它来检查要忽略的元素。

    如果没有看到标记,我就帮不上什么忙了。您需要将 **slider-container** 替换为标识您要忽略的元素的内容。

    【讨论】:

    • 不用担心 - 很高兴为您提供帮助 :)
    猜你喜欢
    • 2022-11-24
    • 2012-08-04
    • 1970-01-01
    • 2023-03-14
    • 2021-12-15
    • 1970-01-01
    • 2011-05-29
    • 2019-10-23
    • 2021-03-21
    相关资源
    最近更新 更多