首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >触摸时FastClick干扰jQuery UI选择菜单

触摸时FastClick干扰jQuery UI选择菜单
EN

Stack Overflow用户
提问于 2016-02-23 19:49:01
回答 1查看 240关注 0票数 2

我正在尝试在使用jQuery UI选择菜单时实现FastClick。点击选择菜单下拉列表中的一个条目不会在触摸时注册,在没有实际选择点击列表项的情况下关闭列表。为了弥补这一点,我使用bind()在创建jQuery UI元素时将类.needsclick添加到jQuery UI元素中(如这个答案中所建议的)。这应该是为了确保FastClick不应用于有问题的元素。

不幸的是,类只在我打开和关闭菜单一次之后才被添加,所以它只能在第二次尝试选择列表项时起作用,即使在加载页面时就插入了元素。如何确保元素在jQuery UI插入时被添加?

下面是一个工作的CodePen,它演示了这个问题:http://codepen.io/dahdah/pen/qbePZK

JavaScript:

代码语言:javascript
复制
$(document).ready(function() {

  /* global FastClick */
  $(function() {
    FastClick.attach(document.body);
  });

  $('#filetype').selectmenu({
    width: '100%'
  });

  // Fix for FastClick breaking jQuery UI on mobile
  $('body').bind('DOMNodeInserted', function() {
    $(this).find('.ui-menu-item').addClass('needsclick');
  });

});

HTML:

代码语言:javascript
复制
<select id="filetype">
  <option selected=**strong text**"">Filetype</option>
  <option value="doc">DOC</option>
  <option value="pdf">PDF</option>
  <option value="html">HTML</option>
</select>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-23 22:08:13

因此,经过更多的研究,发现"jQuery不涉及节点插入事件。“。一个建议是尝试DOM MutationOberserver,但这将打开一整罐蠕虫的东西,应该是快速和简单的。

我已经通过监听jQuery UI创建的元素的单击来替换本机元素,如<select>,然后将.needsclick添加到插入的列表项中,从而解决了问题:

代码语言:javascript
复制
$('.ui-widget').on('click', function(e) {
  $('.ui-menu-item').addClass('needsclick');
});

需要这样做,因为列表项是在单击.ui-widget之后创建的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35586815

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档