2017-01-06 73 views
-1

嗨在下面的html中,jquery下一個和最接近的選擇器不工作 。接下來,最接近的選擇器不工作jquery

<div> 
    <div class="class1" style=" background-color: red"> hi </div> 
    <br> 
    <div class="class2">Yes</div> 
</div> 

當我嘗試alert ($(".class1").next(".class2").text())alert ($(".class1").closest(".class2").text())都提醒空白。我需要提醒

代碼中的錯誤是什麼。

回答

1

next()<br>而不是類.class2的元素。使用另一個next()

alert($(".class1").next().next(".class2").text());
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div> 
 
    <div class="class1" style=" background-color: red">hi</div> 
 
    <br> 
 
    <div class="class2">Yes</div> 
 
</div>

如果有多個<br>元素,你可以使用nextAll()

alert($(".class1").nextAll(".class2").text());
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div> 
 
    <div class="class1" style=" background-color: red">hi</div> 
 
    <br> 
 
    <div class="class2">Yes</div> 
 
</div>

2

next只着眼於緊接着的下一個兄弟姐妹。你想要的是nextAll

console.log($(".class1").nextAll(".class2").text());
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div> 
 
    <div class="class1" style=" background-color: red"> hi </div> 
 
    <br> 
 
    <div class="class2">Yes</div> 
 
</div>

3

用的Class1和Class2中的div是在DOM同一水平。所以你可以查看class1的兄弟姐妹並搜索class2。

$(".class1").siblings('.class2').text() 
// => "Yes" 

或者你可以同時使用的父元素找到其下的類2。

$(".class1").parent().find('.class2').text() 
// => "Yes" 
1

由於next()只針對緊跟兄弟這樣你的代碼沒有奏效。

您可以獲得.parent()然後使用.find()/.children()

$(".class1").parent('div').find(".class2").text() 

console.log($(".class1").parent('div').find(".class2").text());
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div> 
 
    <div class="class1" style=" background-color: red">hi</div> 
 
    <br> 
 
    <div class="class2">Yes</div> 
 
</div>