【问题标题】:swipe-right triggered twice in jQuery Mobile在 jQuery Mobile 中向右滑动触发了两次
【发布时间】:2013-05-16 18:13:33
【问题描述】:

我正在尝试将this 插件集成到我的网站中,以便我可以滑动删除。然而问题是这个插件是用“swiperight”触发的,同样的滑动事件被用来显示我的面板。我设法使用event.target.tagName 将事件分开。当它是A(链接)时,我想激活滑动删除按钮,否则我希望我的面板滑入。

换句话说,pageinit 事件被触发了两次,因此滑动删除按钮开始出现,然后再次触发相同的事件。我想以某种方式取消一项操作,但我无法使其工作。我已经试过了:

event.stopImmediatePropagation();
event.stopPropagation();
event.preventDefault();

我也尝试使用这里给出的一些解决方案,但没有运气: jQuery Mobile: document ready vs page events

可以找到我的问题的演示 snip,我当前的 pageinit 函数是这样的:

$(document).on('pageinit', function() {
    //Activate horizontal swipe after x px.
    $.event.special.swipe.horizontalDistanceThreshold = 80;
    $('div[data-role="content"]').on("swiperight", function(event) {
        //If tagname is 'A' you probably want slide to delete not the panel
        if(event.target.tagName != 'A') {
            $.mobile.activePage.find("#menu").panel("open");
        } else {
            //Cancel swipe
            event.stopImmediatePropagation();
        }
    });

    //Swipe to delete
    $("#swipe li").swiper( {
        corners: false,
        label: "Verwijder",
        swipe: function(event, ui) {
            alert('trigger');
        },
        click: function(event, ui) {
            var $item = $(this);
            //console.log($(this));
            $item.fadeOut(250, function() {
                $item.remove();
            });
        }
    });
}); 

【问题讨论】:

    标签: jquery-mobile jquery-plugins


    【解决方案1】:

    使用以下插件修复了问题:TouchSwipe,它能够简单地从事件中排除元素。

    【讨论】:

      猜你喜欢
      • 2013-10-27
      • 2023-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-07
      相关资源
      最近更新 更多