2010-10-01 99 views
2

我想做以下使用.attr();jQuery .attr()和值

selectbox.options[selectbox.selectedIndex].value 

可悲的是,

selectbox.options[selectbox.selectedIndex].attr("value") 

是不一樣的,而且似乎完全打敗.attr的目的。我的主要問題是:如何使用嵌套的.attr()s?

Muchos格拉西亞斯MI戈斯

+0

JavaScript沒有'attr'函數。 jQuery的確。我編輯了標題。 – 2010-10-01 22:05:06

+0

@ T.J。 Crowder thanks – sova 2010-10-03 22:29:45

回答

7

要獲得的任何類型的輸入元件的值(包括<textarea><select>)使用.val()

var value = $(selectbox).val(); 

.attr()翻譯將大致是:

$(selectBox).find(":selected").attr("value"); 

....但只是使用.val() :)

基本問題是,.attr()是一個jQuery方法。它是在jQuery對象上,而不是直接在DOM元素上,幾乎同樣適用於全部 jQuery方法和插件。

1

使用attr()時,您必須使用jQuery對象。因此,首先選擇相關的選擇框,然後在需要輸入元素的值時調用attr()(或val())。

var value = $(selectbox).val(); 
0

的原因,他們是不一樣的,因爲attr('value')得到value的值直接從原始的HTML代碼屬性,它不更新與DOM,如果value值後,改變的意思在頁面加載,或者通過用戶輸入(鍵入到<input>元件,或經由與JavaScript操作,這些變化將不被在.attr()返回值反映出來。

一種更好的方法是使用的所述.val()方法jQuery對象


編輯 爲了從一個DOM元素值的屬性(即不是由$()jQuery()函數返回)使用element.getAttribute()方法,這是本地的,你會使用這樣的:

selectbox.options[selectbox.selectedIndex].getAttribute("value"); 
+0

他打算*取*這個值,這不是問題......它就是'.attr()'甚至不是DOM元素上的有效方法:) – 2010-10-01 22:05:44

+0

哦,我現在看到了,我只是假設他正在使用jQuery,所以我沒有看他的代碼,並發現非jQueryness。謝謝 :) – 2010-10-01 22:07:09

1

如果您想使用當前的代碼簡單地將它傳遞到檢索​​選擇框的值這樣的jquery對象。

$(selectbox.options[selectbox.selectedIndex]).attr('value');