【问题标题】:jquery click event not working on mobile devicesjquery点击事件在移动设备上不起作用
【发布时间】:2017-09-22 19:56:35
【问题描述】:

我正在尝试显示移动设备的侧边栏。当我点击一个元素时,我想用一个子菜单打开那个 li 标签。在浏览器中它工作正常,但在移动设备上它不工作。

我也尝试使用“touchstart”而不是点击。这里的问题是,当我触摸元素并开始滚动时,子菜单会打开。我只想在点击/单击时打开它。

谁能帮我解决这个问题?

HTML:

<li>
    <a class="filter-attribute"><i class="fa fa-chevron-down pull-right"></i>head1</a>
      <ul class="child">
         <li class="filter-item"><input type="checkbox" name="attributeItems[]">sub1</li>
      </ul>
</li>

jQuery:

$(document).on("click", ".filter-attribute", function () {
$(this).next('.child').fadeToggle("slow");
});

【问题讨论】:

  • 您可以在移动设备上使用touchstart 或mousedown
  • 当我按下鼠标时,它什么也没有打开

标签: jquery html onclick mobile-devices touchstart


【解决方案1】:

您可以为此使用mousedown。检查下面更新的 sn-p

$(document).on("mousedown", ".filter-attribute", function () {
    $(this).siblings('.child').fadeToggle("slow");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
<li>
    <a class="filter-attribute"><i class="fa fa-chevron-down pull-right"></i>head1</a>
      <ul class="child">
         <li class="filter-item"><input type="checkbox" name="attributeItems[]">sub1</li>
      </ul>
</li>
</ul>

【讨论】:

  • 是否因为侧边栏后面的内容正在滚动而对我不起作用?
【解决方案2】:

尝试另一种方法,使用 touchstart 事件,它适用于移动设备:

$(document).on("click touchstart", ".filter-attribute", function (e) {
    $(this).closest("li").find('.filter-item').fadeToggle("slow")
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<li>
    <a class="filter-attribute"><i class="fa fa-chevron-down pull-right"></i>head1</a>
      <ul class="child">
         <li class="filter-item"><input type="checkbox" name="attributeItems[]">sub1</li>
      </ul>
</li>

【讨论】:

  • 这不会打开我的侧边栏
  • 如果我使用上面的代码,通过 touchstart,它会打开...但是当我滚动时,它看起来不太好
猜你喜欢
  • 2015-07-15
  • 1970-01-01
  • 1970-01-01
  • 2015-11-22
  • 2016-01-17
  • 1970-01-01
  • 2016-11-14
  • 1970-01-01
相关资源
最近更新 更多