当前位置: 首页 > 知识库问答 >
问题:

如何在列表元素上使用滑动事件添加选项和条件?

秋兴思
2023-03-14

我有一个包含li元素的简单无序列表。我想做一些类似于rc-swipeout npm库的事情,如果你在列表元素上滑动,你会看到选项。

不幸的是,我正在运行Meteor/Blaze应用程序,无法使用React。我发现了几个简单的jQuery库,比如swipeTo,这里有一个演示(适用于移动)。

swipeTo库实际上提供了一些滑动功能,它提供了当你滑动过去时的选项。

但是,我想添加功能,当我刷所有方式,列表项删除。现在,当你一路滑动时,列表项就会反弹回它的正常位置,就像你在演示中看到的那样。

添加这样一个条件的最佳方法是什么?

共有1个答案

暨弘毅
2023-03-14

尝试检查event.clientX;保存swipeStart中的值并将其与SwipeEnd中的值进行比较。(我不明白swipeto.js脚本是如何使事件坐标可用的,所以我对其进行了编辑,第40和93行):

if(typeof swipeStart == 'function') {
    swipeStart.call(this, start);   //add 'start' as parameter
}

if(typeof swipeEnd== 'function') {
    swipeEnd.call(this, absMoveStatus, e.changedTouches[0].clientX);   //add amount moved and clientX as parameter
}

在主脚本中:

$(function() {
    $('.item-swipe').swipeTo({
        minSwipe: 100,
        angle: 10,
        binder: true,
        swipeStart: function(start) { //now use start value
            console.log('start', start); 
        },
        swipeMove: function(e) {
            console.log('move');
        },
        swipeEnd: function(movedAmount, end) {
            console.log('end', movedAmount, end);
            // if movedAmount value > 200, and end value < 20 (close to left side), 
            // then delete the item
        },
    }); 
    deleteItem();
})
 类似资料:
  • 问题内容: 这是一个非常简单的程序: 这是我期望的输出: 但是我得到了这个: 真的有我不来的东西! 问题答案: 你必须做 不 现在可以正常工作: 当您执行类似操作时,您会在一个列表中三次获得相同的列表。 相同的 意思是,当您更改其中之一时,您也会更改所有它们(因为只有一个列表被引用了3次)。 您需要创建三个独立的列表来解决此问题。您可以通过列表理解来做到这一点。您在此处构造一个由独立的空列表组成的

  • 我有以下一段代码: 有没有一种很好的方法可以有条件地添加元素,比如使用流操作?我只想在列表为空时添加method2中的元素,否则返回,以此类推。 编辑:值得一提的是,这些方法包含繁重的逻辑,因此需要防止执行。

  • 将事件侦听器添加到可以使用事件委派的元素。 使用 EventTarget.addEventListener() 将一个事件监听器添加到一个元素。 如果提供了 选项对象(opts) 的 target 属性,确保事件目标匹配指定的目标元素,然后通过提供正确的 this 上下文来调用回调。 返回一个对自定义委派函数的引用,以便与 off 一起使用。 忽略 opts ,则默认为非委派行为,并且事件冒泡。

  • 问题内容: 是否可以向所有动态生成的元素添加事件侦听器(Javascript)?我不是页面的所有者,因此无法以静态方式添加侦听器。 对于页面加载时创建的所有元素,我使用: 当页面上出现新元素时,我需要一种方法来调用此代码,但是我无法使用jQuery(在项目中无法使用elegate,on等)。我怎样才能做到这一点? 问题答案: 听起来您需要执行委派策略而又不退回图书馆。我在此处的小提琴中发布了一些示

  • 问题内容: 如何将事件添加到元素? 我可以用吗: 为了这? 问题答案: 不,你不能。最简单的方法是将函数调用直接放在元素之后 例: 或者-甚至更好-就在: …因此它不会阻止以下内容的加载。

  • 本文向大家介绍如何使用jQuery在动态创建的元素上绑定事件?,包括了如何使用jQuery在动态创建的元素上绑定事件?的使用技巧和注意事项,需要的朋友参考一下 要在动态创建的元素上绑定事件,您需要动态加载。您可以尝试运行以下代码,以了解如何在动态创建的元素上绑定事件。在这里,我们将在单击按钮时生成一个新的列表项。 示例