Jquery在下一个元素中选择一个嵌套元素

时间:2016-12-16 07:50:39

标签: javascript jquery html

从下面的结构我试图在按钮后面的跨度上放置一个类,但我似乎无法遍历包含跨度的div。

我可以使用以下方法定位div:

$("button").next('div').addClass('alert');

但是不能直接使用以下方法将该类应用于跨度:

$("button").next('div > span').addClass('alert');

$("button").next('div').next('span').addClass('alert');

我的示例结构是

<button>Click</button>
  <div>
    <span></span>
  </div>
<button>Click</button>
  <div>
    <span></span>
  </div>

5 个答案:

答案 0 :(得分:1)

您需要使用find功能。

请试试这个:

$("button").next('div').find('span').addClass('alert');

$("button").next('div').find('span').addClass('alert');
.alert{
  color:red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button>Click</button>
  <div>
    <span>abc</span>
  </div>
<button>Click</button>
  <div>
    <span>def</span>
  </div>

另一种解决方案是使用children方法。

$("button").next('div').children('span').addClass('alert');
.alert{
  color:red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button>Click</button>
  <div>
    <span>abc</span>
  </div>
<button>Click</button>
  <div>
    <span>def</span>
  </div>

答案 1 :(得分:0)

&#13;
&#13;
$("button").next('div').find('span').addClass('alert');
&#13;
.alert{color:red}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button>Click</button>
<div>
  <span>this</span>
</div>
<button>Click</button>
<div>
  <span>this</span>
</div>
&#13;
&#13;
&#13;

这应该有效。将.next().find()

一起使用

答案 2 :(得分:0)

你可以这样做

$("button").on('click',function(){
 $(this).next('div').find('span').addClass('alert');
})

DEMO

答案 3 :(得分:0)

如果您需要将课程添加到点击span的{​​{1}},则需要处理button的{​​{1}}

click event

答案 4 :(得分:0)

根据文档,next()遍历兄弟姐妹:

.next( [selector ] )
Description: Get the immediately following sibling of each element in the set 
of matched elements. If a selector is provided, it retrieves the next sibling 
only if it matches that selector.

所以你需要使用children()代替。