8

假设我有这个 HTML:

<div class="top">top
    <div class="middle">middle
        <div class="bottom">bottom</div>
    middle</div>
top</div>
<div class="middle">outside middle</div>

有没有办法为选择器创建一个变量,然后将其用作另一个选择器的一部分?这就是我想要做的,但这不起作用:

$top = $('.top');

$($top + ' .middle').click(function(){
    $(this).toggleClass('green');
});

我确定我不需要重新选择 .top,因为这就是变量所做的,所以我确定我需要对 $top 做一些事情,我只是不确定是什么。

http://jsfiddle.net/ftXLx/1/

4

3 回答 3

21

利用

$('.middle', $top)

或者

$top.find('.middle')

您也可以简单地将作为字符串的选择器与

$($top.selector + ' .middle')

但这只会更慢且可读性更低......

于 2013-06-03T15:49:20.047 回答
5

您可以使用find()

描述:获取当前匹配元素集中每个元素的后代,由选择器、jQuery 对象或元素过滤。

$top.find(".middle");
于 2013-06-03T15:50:36.700 回答
0

你能不能像这样选择它:

$('.top .middle').click();
于 2013-06-03T16:00:39.270 回答