【问题标题】:Getting options by value from select element in jQuery从jQuery中的选择元素中按值获取选项
【发布时间】:2013-01-28 23:43:33
【问题描述】:

我想像这样访问选择选项 jQuery 对象:

var $options = $('select').children();
var $someOption = $('[value="some_value"]', $options);
var $anotherOption = $('[value="another_value"]', $options);

$someOption$anotherOption 看起来都不像$('select') 中的任何元素。

我相信我知道如何编写单行选择器,但由于我要访问各种选项,因此我想使用 $options 句柄来提高可读性和性能。

代码和/或基本原理有什么问题?

【问题讨论】:

  • 您是否不小心从$someOption$anotherOption 的选择器中排除了$
  • 您的第二个和第三个选择器上的 jQuery 函数似乎缺少 $
  • @ExplosionPills,jmoerdyk,谢谢,我现在修正了 OP 的拼写错误。

标签: jquery jquery-selectors option


【解决方案1】:

你必须使用jQuery的filter方法:

var $options = $('select').children();
var $someOption = $options.filter('[value="some_value"]');
var $anotherOption = $options.filter('[value="another_value"]');

【讨论】:

  • 传入一个 jQuery 对象作为第二个参数作为从中选择的上下文,因此它与您的代码 EDITED 执行相同的操作(此语句不正确)
  • @JustinBicknell - 不。传入上下文搜索后代,is equivalent to this:$options.find('[value="some_value"]')
【解决方案2】:

为了使用上下文参数,请不要调用.children()

var $select = $('select');
var $someOption = $('[value="some_value"]', $select);
var $anotherOption = $('[value="another_value"]', $select);

【讨论】:

  • 每次都会遍历 DOM。过滤只查看被过滤的集合。
  • @JosephSilber 没错,虽然它只需要遍历select下面的DOM子集,而不是整个DOM,所以还不错。
  • 没错,但它比过滤有什么好处?
  • @JosephSilber 它不那么冗长,有些人可能会觉得它更具可读性,这是 OP 正在寻找的标准之一。
猜你喜欢
  • 2011-11-09
  • 2016-11-30
  • 2011-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-09
  • 2018-04-28
相关资源
最近更新 更多