2016-07-04 80 views
1

我無法找到父母選擇器如何在jQuery中工作。jQuery - 父母選擇器

var test = $("p:contains('Lorem ipsum dolor sit amet')").parentsUntil("span"); 
 
    
 
    
 
    test.css({ "border" : "1px solid red"});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<table> 
 
    \t \t \t <p>Title</p> 
 
    \t \t \t <span> 
 
    \t \t \t \t <p>Span</p> 
 
    \t \t \t \t <div> 
 
    \t \t \t \t \t <p>Div</p> 
 
    \t \t \t \t \t <p>Lorem ipsum dolor sit amet</p> 
 
    \t \t \t \t </div> 
 
    \t \t \t </span> 
 
    \t \t \t <tr> 
 
    \t \t \t \t <th>Xx</th> 
 
    \t \t \t \t <td>YY</td> 
 
    \t \t \t </tr> 
 
    \t \t </table>

如何獲得邊框跨度?我的代碼不起作用。

+0

你的問題是unclead。我無法理解你想要什麼。你的html也是無效的。 – Mohammad

+0

您的HTML無效。瀏覽器處理這是多種方式,你應該在處理jQuery之前糾正這個問題。 – j08691

+0

使用'.closest(「span」)'而不是'parentsUntil(「span」)'。 –

回答

0

你只需要使用.closest()來代替,以.parent()一起:

var test = $("p:contains('Lorem ipsum dolor sit amet')").parent().closest("span"); 

UPDATE

您也可以繼續使用parentsUntil(),但增加了父()原因很明顯:

var test = $("p:contains('Lorem ipsum dolor sit amet')").parentsUntil("span").parent(); 

但這不會如果直接父類的,因爲parentsUntil排除當前元素作品「跨越」。

+0

爲什麼如果我將.closest(「span」)更改爲.closest(「table」),它又不起作用? –

+0

@Karolina Ticha因爲您的表格無效(或至少根據Chrome 51.0.2704.103無效)。段落和跨度應包裹在和​​標籤中。否則,它們會被自動從表格中取出,就好像

標籤在他們之後。 –

0

根據文檔.parentsUntil()將在當前元素和選擇父之間選擇所有的父母(不包括它)

  • 選擇類型:選擇含有選擇表達的字符串以指示在何處停止匹配祖先元素。

  • filter類型:選擇器包含選擇器表達式以匹配元素的字符串。

你需要的僅僅是.parents('span')

var test = $("p:contains('Lorem ipsum dolor sit amet')").parents("span"); 
 
    
 
    
 
    test.css({ "border" : "1px solid red", "display":"block"});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<table> 
 
    \t \t \t <p>Title</p> 
 
    \t \t \t <span> 
 
    \t \t \t \t <p>Span</p> 
 
    \t \t \t \t <div> 
 
    \t \t \t \t \t <p>Div</p> 
 
    \t \t \t \t \t <p>Lorem ipsum dolor sit amet</p> 
 
    \t \t \t \t </div> 
 
    \t \t \t </span> 
 
    \t \t \t <tr> 
 
    \t \t \t \t <th>Xx</th> 
 
    \t \t \t \t <td>YY</td> 
 
    \t \t \t </tr> 
 
    \t \t </table>