2012-07-03 24 views
2

我想要樣式頂級父母,它應該是動態的。我只想要風格頂級父母。我們可以添加更多的父div,但風格應該反映到div。這是可能的jQuery。如何使用jquery風格的頂級父元素

<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Untitled Document</title> 
<script type="text/javascript" src="jquery-1.7.2.js"></script> 
<script type="text/javascript"> 

$(function(){ 
    $('.text').parent().css('background-color','red') 
}) 

</script> 
</head> 
<body> 

<div> 
    <div> 
     <div class="menu"> 
      <div class="text">hiiii</div> 
     </div> 
    </div> 
</div> 

</body> 
+2

您對'top parent'的定義是什麼? – jfriend00

回答

4

根據你所說的什麼「頂父」,您可能希望parents功能與選擇"div"

$(function(){ 
    $('.text').parents("div").last().css('background-color','red'); 
}); 

注意,如預期,如果$('.text')只匹配一個元素,這隻會工作。如果匹配不止一個,你需要一個循環,例如:

$(function(){ 
    $('.text').each(function() { 
     $(this).parents("div").last().css('background-color','red'); 
    }); 
}); 

...其中規定每個匹配的.text的「頂父」爲紅色。

0

你可以做象下面這樣:

$('.text').parents('div:last').css('background-color','red')​; 

.parents()返回祖先訂單內而外,所以你可以加:last選擇,以獲得最外側的parent。

0

我想你想從當前選定的最高級別的元素。您可以使用.parents()來獲得div的所有父母,直到bodyhtml

$(".text").parents() 
[ 
<div class=​"menu" style=​"background-color:​ red;​ ">​…​</div>​, 
<div>​…​</div>​, 
<div>​…​</div>​, 
<body>​…​</body>​, 
<html>​…​</html>​ 
] 

parents = $(".text").parents(); 
var rootElement = $(parents[parents.length-3]) 

我做-3,因爲我不包括bodyhtml(這是-2和陣列是基於這樣減去另一0)。你不能做這個減法,並指定一個選擇器,如.parents("div"),也只是得到最後一個。你需要知道根元素是什麼樣的元素。