2010-10-01 101 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');