jquery,如何使用带有css范围的nextAll()

时间:2012-11-04 09:29:35

标签: javascript jquery jquery-selectors

HTML:

<div class="my_1"></div>

<div class="my_big">     
      <div class="small" id="id_1"></div>      
      <div class="small" id="id_2"></div>     
      <div class="small" id="id_3"></div>      
      <div class="small" id="id_4"></div>      
</div>

的javascript:

var css_scope=$(".my_big");
var next_div=$(".my_1").nextAll('.small',css_scope).first();

console.log(" \n next div = "+ next_div.attr('id'));

控制台显示undefined。但是如果我从html中排除my_big div并在javascript中定义var next_div,则如下所示:

var next_div=$(".my_1").nextAll('.small').first();

获得预期的产出。

如何让nextAll()使用上面提到的css范围?

3 个答案:

答案 0 :(得分:0)

.nextAll用于查找所有下一个兄弟姐妹,您应该从.small的结果中找到nextAll

var next_div=$(".my_1").nextAll('.my_big').find('.small').first();

答案 1 :(得分:0)

无法使用.smallmy_1获取nextAll(),因为他们不是兄弟姐妹。您可以使用以下选择器访问它。

// Get the first element matching ".small" inside an element matching ".my_big"
// that comes immediately after an element matching ".my_1"

var next_div = $('.my_1 + .my_big > .small:first')​;

选中演示 http://jsfiddle.net/q6XKR/

答案 2 :(得分:0)

如果您想访问my_big div中的第一个元素,则无需将my_1带入场景。

var next_div = $('.my_big').find('.small').first();

console.log(" \n next div = "+ next_div.attr('id'));

希望它能在某些方面澄清你在jQuery中遍历元素。