【问题标题】:jQuery .attr() and valuejQuery .attr() 和值
【发布时间】:2010-10-01 21:57:53
【问题描述】:

我想使用 .attr();

selectbox.options[selectbox.selectedIndex].value

很遗憾,

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

不一样,似乎完全违背了 .attr 的目的。我的主要问题是:应该如何使用嵌套的 .attr()s?

【问题讨论】:

  • JavaScript 没有attr 函数。 jQuery 可以。我已经编辑了标题。

标签: javascript jquery attributes


【解决方案1】:

要获取任何类型的输入元素(包括<textarea><select>)的值,请使用.val()

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

.attr() 的翻译大概是:

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

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

基本问题是.attr() 是一个jQuery 方法。它在 jQuery 对象上,而不是直接在 DOM 元素上,几乎所有 jQuery 方法和插件也是如此。

【讨论】:

    【解决方案2】:

    使用 attr() 时,您必须使用 jQuery 对象。所以首先选择相关的选择框,然后调用 attr() (或 val() 在这种情况下,当您需要输入元素的值时)。

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

    【讨论】:

      【解决方案3】:

      如果您想使用当前代码检索选定框的值,只需将其传递给 jquery 对象,如下所示。

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

      【讨论】:

        【解决方案4】:

        它们不一样的原因是attr('value')直接从原始HTML代码中获取value属性的值,它不随DOM更新,意思是如果值value 在页面加载后被更改,无论是通过用户输入(键入 <input> 元素,还是通过 JavaScript 操作,这些更改都不会反映在 .attr() 的返回值中。

        更好的方法是使用 jQuery 对象的.val() 方法。


        编辑 要从 DOM 元素(即不由 $()jQuery() 函数返回)获取值的属性,请使用本机的 element.getAttribute() 方法,您可以像这样使用它:

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

        【讨论】:

        • 他打算获取这个值,这不是问题...只是.attr() 甚至不是DOM元素上的有效方法:)
        • 哦,我现在明白了,我只是假设他使用的是 jQuery,所以我没有查看他的代码并发现非 jQuery 性。谢谢:)
        猜你喜欢
        • 2012-01-08
        • 2020-06-25
        • 2019-02-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-07-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多