jQuery移动的列表视图滑动菜单

pdsfdshx  于 2023-10-17  发布在  jQuery
关注(0)|答案(1)|浏览(126)

我有一个标准的JQM页面,带有自动生成的分隔符的ListView。
我希望能够添加一些功能,允许用户在列表视图中的项目上向左或向右滑动,并完成以下任一项;
1.显示一个星星图标并在本地存储中创建一些信息。在第二次滑动时,将图标更改为“空心”星星并删除本地存储中的值
1.显示一个“空心”星星图标,当点击它时,在locastorage中创建一个值,然后该图标被一个“填充”星星替换。同样,如果第二次按下星星,localstorage值将被删除,图标将恢复为“空心”星星
我相信我在其他地方看到过类似主题的信息,但今天似乎找不到。我该从何说起呢?

p1iqtdky

p1iqtdky1#

创建包含 * 星星 * 的span元素。在每个li元素之前添加span。

<ul data-role="listview" id="list">
  <span class="yellowStar"></span>
  <li>Item 1</li>
  <span class="hollowStar"></span>
  <li>Item 2</li>
  <span class="hollowStar"></span>
  <li>Item 3</li>
  <span class="hollowStar"></span>
  <li>Item 4</li>
  <span class="hollowStar"></span>
  <li>Item 5</li>
</ul>

将以下CSS应用于 * 填充 * 和 * 空心 * 星。

.ui-listview>.ui-li-static {
  overflow: initial; /* to hide spans underneath */
  -webkit-transition: -webkit-transform 300ms ease; /* transition effect */
     -moz-transition: -moz-transform 300ms ease;
       -o-transition: -o-transform 300ms ease;
          transition: transform 300ms ease;
}

ul span {
  float: right;
  padding: 1.3em 20px;
  z-index: -1;
}

ul .yellowStar {
  background-image: url(filled.png);
  background-repeat: no-repeat;
  background-position: center;
}

ul .hollowStar {
  background-image: url(hollow.jpg);
  background-repeat: no-repeat;
  background-position: center;
}

然后连接swipeleft以显示星星。

$(document).on("click", "ul span", function () {
    $(this).toggleClass("yellowStar hollowStar");
}).on("swipeleft", "ul li", function (e) {
    $(this).off("click");
    $(this).css({
        transform: "translateX(-40px)"
    }).one("transitionend webkitTransitionEnd oTransitionEnd otransitionend MSTransitionEnd", function () {
        $(this).one("click swiperight", function () {
            $(this).css({
                transform: "translateX(0)"
            });
        });
    });
});

每当swipe被触发时,它也会触发click,因此,当swipe触发时,.off("click")是必不可少的。但是,一旦转换结束,clickswiperight侦听器将被附加到关闭/隐藏星星。

Demo

相关问题