【问题标题】:How to set .selectedIndex with jQuery如何使用 jQuery 设置 .selectedIndex
【发布时间】:2016-08-20 22:40:19
【问题描述】:

我有一些 html 选择:

<select class="form-control, dropdown" id="delperffrom" name="delperffrom">
. . .
<select class="form-control, dropdown" id="delperfto" name="delperfto">
. . .

我想将它们初始化为“无价值”,所以有这个 javascript,它可以工作:

document.getElementById("delperffrom").selectedIndex = -1;

..还有这个 jQuery,它没有:

$("#delperfto").selectedIndex = -1;

为什么 jQuery 不起作用?

【问题讨论】:

  • 不相关但 css 类仅由空格分隔。
  • api.jquery.com/?s=selectedIndex 显示此属性不存在,但显示可用于更改 selectedIndex 的方法。
  • 可能是$("#delperfto")[0].selectedIndex = -1; ?
  • jQuery Set Select Index的可能重复
  • 另外,类列表中不要放逗号:“form-control dropdown”是正确的。

标签: javascript jquery html-select


【解决方案1】:

.selectedindexDOM 元素的属性,而不是 jQuery。您可以在 DOM 元素上更改它,或使用 jQuery .prop() 方法:

$("#delperffrom")[0].selectedIndex = -1; // change on dom element pulled from jQuery
$("#delperffrom").prop('selectedIndex',-1); // change with .prop() jquery method

【讨论】:

    【解决方案2】:

    因为$("#delperfto") 不是 DOM 元素。它是一个 jQuery 对象,而 jQuery 对象没有 .selectedIndex 属性。 jQuery 对象是它自己的对象类型,具有自己的属性和方法。它没有与 DOM 元素相同的属性和方法。它通常有一种完成相同事情的方法,但通常使用不同的语法。

    您可以从 jQuery 对象中获取 DOM 元素并直接访问该 DOM 元素,如下所示:

    $("#delperfto")[0].selectedIndex = -1;
    

    $("#delperfto").get(0).selectedIndex = -1;
    

    或者,您可以使用 jQuery 的 .prop() 方法让它为您在每个 DOM 元素上设置所需的属性,如下所示:

    $("#delperfto").prop("selectedIndex", -1);
    

    在这种特定情况下,其中一个或另一个没有特别的优势,但是如果您的选择器在其中返回了多个元素,例如:

    $(".options").prop("selectedIndex", -1);
    

    然后 jQuery .prop() 方法将在选择器匹配的所有 DOM 元素上设置该属性,而不仅仅是第一个有时非常有用的元素。

    【讨论】:

    • 只是想知道为什么这两个答案都被否决了。看起来很奇怪。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-19
    • 2017-07-18
    • 1970-01-01
    • 2019-05-24
    • 1970-01-01
    • 2014-06-05
    • 2018-03-17
    相关资源
    最近更新 更多