0

我将如何.on()在 jQuery 中使用不是直接父元素的元素?

.live()看起来像这样

$('.home_collapsibles').find('.ui-collapsible-heading').live('tap', function (event) {});

与元素

<div data-role="collapsible-set" class="home_collapsibles ui-collapsible-set" data-theme="c" data-inset="false">    
    <div data-role="collapsible" data-collapsed="true" data-collapsed-icon="arrow-r" data-expanded-icon="arrow-d" data-iconpos="right" class="ui-collapsible ui-collapsible-collapsed">
        <h3 class="ui-collapsible-heading ui-collapsible-heading-collapsed"><a href="#" class="ui-collapsible-heading-toggle ui-btn ui-btn-icon-right ui-btn-up-c" data-corners="false" data-shadow="false" data-iconshadow="true" data-wrapperels="span" data-icon="arrow-r" data-iconpos="right" data-theme="c">

这是我的 JS Fiddle http://jsfiddle.net/jostster/WD6DD/

编辑:这似乎工作http://jsfiddle.net/jostster/fNNnJ/,但是我想将监听器限制为仅在.home_collapsibles

4

2 回答 2

2
$('.home_collapsibles').on('tap', '.ui-collapsible-heading', function () {});
于 2012-10-09T23:27:38.163 回答
1

根据其继承者重写 .live() 方法很简单;这些是对所有三种事件附件方法进行等效调用的模板:

$(selector).live(events, data, handler);                // jQuery 1.3+
$(document).delegate(selector, events, data, handler);  // jQuery 1.4.3+
$(document).on(events, selector, data, handler);        // jQuery 1.7+

对于仍在使用 .live() 的页面,此版本特定差异列表可能会有所帮助:

在 jQuery 1.7 之前,要在使用 .live() 绑定后阻止进一步的处理程序执行,处理程序必须返回 false。调用 .stopPropagation() 不会完成此操作。从 jQuery 1.4 开始,.live() 方法支持自定义事件以及所有冒泡的 JavaScript 事件。它还支持某些不冒泡的事件,包括更改、提交、聚焦和模糊。在 jQuery 1.3.x 中,只能绑定以下 JavaScript 事件:click、dblclick、keydown、keypress、keyup、mousedown、mousemove、mouseout、mouseover 和 mouseup。

来自:http ://api.jquery.com/live/

于 2012-10-09T23:26:35.090 回答