使用.on()而不使用直接父级

时间:2012-10-09 23:24:57

标签: jquery

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

.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小提琴 http://jsfiddle.net/jostster/WD6DD/

编辑:这似乎有效http://jsfiddle.net/jostster/fNNnJ/,但我想将听众仅限于.home_collapsibles

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分: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,   按键,键盘,mousedown,mousemove,mouseout,mouseover和   鼠标松开。

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