将事件侦听器添加到除一个之外的多个元素

时间:2013-10-02 16:42:02

标签: javascript jquery javascript-events zepto

我正在开发一个带有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);
});

1 个答案:

答案 0 :(得分: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**替换为标识要忽略的元素的内容。