有没有办法在 .on() 的委托事件中使用 jQuery 选择器?您将如何在选择器中仅选择直接子级?下面是一个代码示例:我想只过滤元素的直接<div>
子<section>
元素,并要求它们的子元素中至少有一个<p>
包含单词«hello»。在这个例子中,只有第二个<div>
会被过滤。问题是<div>
之后可以添加其他,因此必须委托事件。
.live() 方法的使用使它更简单恕我直言,因为我可以使用:
$('section > div').filter(function(){return /hello/.test(p) }).live('mouseenter', function(){ ... })
但由于它现在已被弃用,它的替代 .on() 只允许在委托事件中使用纯 CSS 类选择器。有没有人知道如何根据上述两个条件(直系子女和<p>
包含你好)过滤这些元素?谢谢
<section>
<div>
<p>abc</p>
<div>
<p>def</p>
<p>hello</p>
</div>
</div>
<div>
<p>hello world</p>
<p>test</p>
</div>
</section>
编辑:我忘了添加我的 JS 示例,我正在稍微修改条件,以便 p:contains('hello') 不足以作为选择器。
$('section').on({
mouseenter: function(){
$(this).css('background-color','red');
}
},
$('div').filter(function(){
var p = $(this).children('p').filter(function(){
return /hello/.test($(this).text());
});
return p.length > 2;
})
);