2015-10-14 83 views
1

的分組是否有可能實現以下只用選擇選擇讓父母

$(this:parent:prev) 

我希望得到家長的分組。我想只用選擇

+4

爲什麼你只想使用選擇器而不是鏈接'.parent'和'.prev'調用? – ryachza

+2

有沒有可以做到這一點的選擇器。選擇器用於*過濾*,不適用於樹遍歷。 – Tomalak

+1

@ A.Wolff不,你不能。 (換句話說,我會很有興趣看到這個。) – Tomalak

回答

4

沒有家長選擇和以前的兄弟選擇,因此你使用parentprev方法

$(this).parent().prev(); 

如果你看看jQuery Documentation:parent,你不」真的很想要:parent

選擇至少有一個子節點(元素或文本)的所有元素。


可以在jQuery的如下創建自定義:parent選擇:

$.extend($.expr[':'], { 
 
    parent: function(element, _, m) { 
 
    return $(element).parent(); 
 
    } 
 
}); 
 

 
$('span:parent').css('color', 'green').prepend('Hello World!');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<div> 
 
    <span>Bye!</span> 
 
</div>

+0

[擴展jQuery的選擇器功能](http://james.padolsey.com/javascript/extending-jquerys-selector-capabilities/) – Tushar

+0

使用您的自定義僞選擇器,您的目標是元素本身,而不是父級。順便說一句,表達式'返回$(元素).parent();'永遠是真正的 –

2

在純JavaScript,這將是:

this.parentNode.prevElementSibling 
+1

總是很高興看到不是每個人都忘記了DOM。 – Tomalak

0

$(this).parent('div').prev();