【问题标题】:jQuery $('parent > *') selector & iOS with a click delegatejQuery $('parent > *') 选择器和带有点击委托的 iOS
【发布时间】:2012-01-15 09:05:52
【问题描述】:

HTML:

<div id="wrapper">
  <span class="stuff">Content</span>
  <span class="stuff">Content</span>
</div>

JQuery:

$(document).delegate("#wrapper > *","click", function(){
  //do stuff
}

上面是我的结构的简短代码。

基本上我正在尝试为父母和所有孩子提供点击事件。

这似乎在 Safari、Chrome、Firefox 和 IE 7+ 中运行良好。但是,它似乎不适用于 iOS 设备(尚未测试过 android)。

有人知道如何让它发挥作用,或者有更好的方法吗?

【问题讨论】:

  • 为什么不只是$(document).delegate("#wrapper","click", function(){...}
  • 因为我稍后再抓。 $(this).parent('#wrapper').children('.stuff').html();我的理解或缺乏只是做#wrapper 会导致 div 内的其他元素可能出现问题,如果不直接单击 #wrapper 的区域,则事件冒泡?
  • 你能做一个 JsFiddle 的例子吗,也许是对在 iOS 上不起作用的一点描述?
  • jsfiddle.net/r3E6a 什么不起作用是事件本身没有触发。我假设这与选择器有关,但此时我只是耸耸肩。

标签: javascript jquery ios jquery-selectors jquery-events


【解决方案1】:

在您的 iOS 设备上试试这个:http://jsfiddle.net/r3E6a/1/show

代码在这里:http://jsfiddle.net/r3E6a/1/

干杯。

【讨论】:

  • 看起来不错。非常感谢。所以看起来代表是罪魁祸首,从外部 div 而不是文档。
  • 嗯,不。我想你可能对委托的工作方式有点困惑。本质上,您定义了一个父元素(或多个元素),它侦听从其子元素冒泡的事件。当事件冒泡到父级时,它会检查该元素是否与您作为第一个参数传递给delegate() 的选择器匹配。如果是,则执行回调。
  • 在尝试将其应用于完整代码之后,这仍然不起作用。在这种情况下,#listings 是通过 ajax 引入的,所以我仍然认为该事件在 iOS 上没有正确传播。
  • 好的。尝试将选择器更改为 #listings 元素的父元素(或在页面加载时存在的最接近的父元素)。
猜你喜欢
  • 2012-01-04
  • 2012-12-18
  • 1970-01-01
  • 1970-01-01
  • 2015-12-08
  • 2011-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多