在<select>框中选择选项的最正确方式

4

我知道使用jQuery有多种方法来选择一个下拉菜单中的特定选项:

  1. $select.val("someValue")
  2. $option.attr("selected", "selected")
  3. $select[0].selectedIndex = 1

假设您已经知道要选择的选项的索引和值,那么从上述或其他方法中,哪种方法是最正确的呢?

所谓“最正确”,指的是:

  1. 最佳实践(如果有)
  2. 将正确设置该值,以便在提交表单时它会被提交,并且可以使用上述任意一种方法检索到它
  3. 为什么我会选择一种方法而不是其他方法的任何其他原因
3个回答

3
这是在普通情况下的正确用法,如果是非“多选”选择框并且没有两个不同的

3
最常用的方法是$select.val("someValue"),这是官方文档中设置任何输入值的方法,因此它将是最优化的方法,也是性能方面最好的选择。
对于#2,是的,它满足要求;对于#3,它很简短,但仍然非常明确地表达了你的意图。
话虽如此,如果你需要设置成千上万个选择元素中的值,则最快的方法是使用$select[0].selectedIndex = 1...你无法比本地DOM属性更快。当只设置一个值时(除非它有很多项,在这种情况下再次使用.selectedIndex),三种方法之间的速度应该相差不大。

1
正如Nick Craver所提到的,任何一种都可以使用,这取决于上下文,哪种最适合您的需求。
就个人而言,如果我需要速度,我只会使用类似以下示例代码(未经测试):
var elem = document.getElementById('myselectid');
elem.options[1].value = 'some value'

但是,这样做会失去使用 jquery 的好处。

如果您需要基于模式进行多个更改,例如,则可以使用jquery来帮助减少您需要编写的未经测试的代码量。 您可以查看此链接中的漂亮模式列表:http://www.myphpetc.com/2009/03/jquery-select-elements-tips-and-tricks.html

因此,在任何情况下都没有最佳方法,这就是为什么有很多种方法可以设置


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接