2012-02-05 71 views
4

jQuery 1.5.1是否支持最接近方法中的屬性選擇器?jQuery與屬性過濾器最接近

下面給出的結構,el代表與價值513複選框,然後我試圖可達並與

$(el).closest("input[value='0']")[0].checked = true; 

請與0值的祖先複選框,但選擇將返回什麼。

我是否錯過了一些愚蠢的東西?

enter image description here


EDIT

嘆息,所以用0值的複選框不是祖先el,只是一個ul祖先的兄弟節點。我得到它與

$(el).closest("ul").siblings("input[value='0']")[0].checked = true; 

但我們有一個更清潔的方式來抓住它?

+1

WOW,我不能相信你問了一個問題,標籤爲'jQuery'和'javascript' ... – gdoron 2012-02-05 01:31:17

+0

@gdoron - 爲什麼? – 2012-02-05 01:35:31

+0

你不是這裏的Javascript-jquery大師嗎? – gdoron 2012-02-05 01:38:04

回答

14

.closest() method確實支持屬性選擇器與任何其他jQuery的方法(雖然我不知道你提到的jQuery的特定版本做),但這裏的問題是,.closest()不只是看在一般的附近,它通過祖先上升。您正在嘗試選擇一個輸入元素,它是而不是這是您開始使用的元素的祖先。 (考慮到輸入不能包含其他元素,他們將永遠任何事物的祖先......)

您應該能夠通過第一選擇目標複選框的父li元素做到這一點:

$(el).closest('li:has(input[value="0"])') 
    .find('input[value="0"]').prop("checked",true); 

演示:http://jsfiddle.net/Vpzyj/

當然,如果你能添加一個類的頂級菜單項,你就不需要更動「:有」,你可以只說:

$(el).closest('li.topMenu').find('input[value="0"]').prop("checked",true); 
+0

+1的解釋,但我不能使用道具,因爲我在jQuery 1.5。你能想到比我偶然編輯更好的方法嗎? – 2012-02-05 01:36:44

+0

那麼根據我的編輯,我會給頂級李一個類,並選擇它,但真正的編輯(我當時沒有看到)更好,因爲它不需要更改標記。 '.prop()'部分實際上並不是我答案的關鍵部分,我相信你知道你可以使用'.attr(「checked」,「checked」)'或者堅持使用'[0] .checked = true',如果你確定總會有一個匹配的元素。我忘了在演示中設置正確的jQuery版本,但是這裏有一個更新,它適用於1.4.4:http://jsfiddle.net/Vpzyj/2/ – nnnnnn 2012-02-05 01:46:29

+0

謝謝 - 你不必爲小提琴製作小提琴我:) – 2012-02-05 01:50:19

1

最近的檢查up the DOM tree,而不是在同一水平上。

+0

我意識到,發佈後不久,耐心地等待大量的答案告訴我:) – 2012-02-05 01:37:38

+0

@AdamRackis hehe它發生:-) – PeeHaa 2012-02-05 01:40:57

+0

再次感謝您的幫助 – 2012-02-05 01:51:27

1

關於你的問題:是的,它(http://api.jquery.com/closest/)

您的代碼不起作用,因爲最接近()通過DOM樹,你的情況上升它因爲你的複選框0不是複選框513的祖先。

2

我相信你不應該需要[0],因爲.closest只返回發現的不同於父母()的第一個元素,返回多個。

$(el).closest("input[value='0']").prop("checked") = true; 

是我寧願這樣做的方式。

這是假設您嘗試在檢查513框時檢查「值0」複選框。

編輯:對不起,誤解了這個。實際上,您需要嘗試獲取< \ li>標籤,然後獲取底層的複選框。你在哪裏實際尋找不是直接父母的複選框。

編輯2:你意識到你的編輯不能正常工作?等等......它會......你用兄弟姐妹而不是我的孩子犯錯。

編輯3:關於使用方法:

$(el).parents().get(':eq(2)').children(':first-child'); 

,還是我們不承擔佈局是固定的嗎?

+0

我需要[0]因爲我檢查檢查屬性在底層dom元素 – 2012-02-05 01:37:06