2011-10-19 69 views

回答

4

docs

獲取每個元素的兄弟姐妹中匹配的元素,任選地通過一個選擇器過濾的。

鏈接的唯一兄弟是div,它與選擇器.divRe .divAbs不匹配。 $('.divRe').is('.divRe .divAbs')返回false

你想將它與.find()結合:

$(this).siblings(".divRe").find(".divAbs") 

編輯:好像你正在.has而不是.find後真的。看看其他答案。

+0

.divRe .divAbs表示裏面有divAbs的所有divRebs ...不是? –

+1

@RoyiNamir:這取決於您將選擇器傳遞給哪個函數。再次閱讀文檔。它說'.siblings()'得到元素的所有兄弟的列表。在你的情況下,唯一的兄弟是'div'。然後它只保留那些匹配選擇器的元素,'div'不匹配'.divRe .divAbs'。在這種情況下,選擇器*不用於*查找*元素。它用於*過濾*已有的一組元素(同胞)。 –

0

".divRe .divAbs"選擇器匹配內部div .divAbs,這不是兄弟姐妹。

您可以使用has()

$(this).siblings(".divRe").has(".divAbs").length 
+0

你的解釋不正確。在這種情況下,「.divRe .divAbs」將匹配具有'divAbs'類的元素和類'divRe'的祖先。 –

+0

@FelixKling是的,你正在寫。 – xdazz

+0

@xdazz,這是不對的。如果你希望both.a和.b如此$(「。a.b」) –

2

如果.divRe有一個以上的(比如2).divAbs這個

$(this).siblings(".divRe").find(".divAbs").length 

將返回2

但這

$(this).siblings(".divRe").has(".divAbs").length 

將給出1.

因此,您需要使用has()方法。