2012-07-17 26 views
0

我有一個函數附加到div #Browse的click事件,它將一個變量isOpen切換爲true或false。另一個點擊事件有以下陳述獲取通過函數設置的屬性jQuery

alert($("#Browse").attr('isOpen')); 
alert(document.getElementById('Browse').isOpen); 

第一個產生「未定義」,而第二個說真或假,是正確的。我如何使用jQuery獲得isOpen的價值?

+0

你使用的是什麼版本的jQuery?這個對我有用; http://jsfiddle.net/enpdh/ – Matt 2012-07-17 15:27:36

+2

@Matt你有它倒退。這是場景:http://jsfiddle.net/mattball/Bf9yv/ – 2012-07-17 15:31:07

回答

-1

要訪問jQuery中的DOM元素,你必須要讓元素它的jQuery的集合中的索引:一個ID,有希望只有您的集合中的一個元素,所以你可以使用get(0)

$('#Browse').get(0).isOpen; 

有關jQuery的元素屬性更加方便易設置,只需使用data方法

+1

哇,有人必須生氣。謹慎分享爲什麼所有答案都被降低了? – 2012-07-17 15:30:28

+0

Upvoted yours too,thanks – 2012-07-17 15:34:12

+0

我沒有downvote。我最喜歡你的方式。這是通過綁定到click事件的遞歸函數調用設置的。它使用this.isOpen = true設置。由於生成的元素沒有被ID跟蹤,所以我不能使用數據。 – user974896 2012-07-17 15:34:28

1

使用數據屬性都設置和獲取數據:

// to set 
$("#Browse").data('isOpen', true) 

// to get 
$("#Browse").data('isOpen') 

文檔

1

沒有 「jQuery的方式」 來做到這一點,因爲isOpen是一個ad-hoc屬性。如果你能夠改變財產的設置,follow the recommendations in Chris' answer

否則,你可以得到的最接近的是使用jQuery來獲取DOM元素,然後解開它:

alert($("#Browse")[0].isOpen); 
0

對於新版本的jQuery,您需要使用.prop來獲取此信息。

alert($("#Browse").prop('isOpen')); 
+0

有沒有關於這方面的任何文件?因爲它可以工作,並且它看起來像jQueryish和優雅的解決方案最多,所以只有我不能在文檔中看到關於通過jQuery以這種方式讀取DOM元素的屬性的任何內容。 – 2012-07-17 15:38:54

+0

@BeatRichartz:http://api.jquery.com/prop/ – 2012-07-17 15:45:16

+0

這正是我所說的,他們只在具有實際html屬性的文檔中使用'prop',而不是使用自定義值。但我會看看源代碼。 – 2012-07-17 15:52:40