在没有jQuery的情况下在HTML中获取所选选项

时间:2015-05-07 14:47:38

标签: javascript node.js dom

我在每个<option>上使用以下函数来确定它是否被选中:

var _matches = function(el, selector) {
  var fn = el.matches || el.matchesSelector || el.msMatchesSelector || el.mozMatchesSelector || el.webkitMatchesSelector || el.oMatchesSelector;
  return fn.call(el, selector);
};

它在NodeJS的jsdom中工作正常,它适用于浏览器中的选择器:checked(在复选框输入上),但选择器{{1> 这是奇怪的。

我收到错误(在Chrome中):

  

Uncaught SyntaxError:无法在'Element'上执行'matches':':selected'不是有效的选择器。

1 个答案:

答案 0 :(得分:5)

错误消息似乎是正确的,querySelector('option:selected')不是有效的选择器,甚至:active :checked :default :dir() :disabled :empty :enabled :first :first-child :first-of-type :fullscreen :focus :hover :indeterminate :in-range :invalid :lang() :last-child :last-of-type :left :link :not() :nth-child() :nth-last-child() :nth-last-of-type() :nth-of-type() :only-child :only-of-type :optional :out-of-range :read-only :read-write :required :right :root :scope :target :valid :visited 也失败

valid pseudo selectors

:checked

要使用的正确psuedo类是:checkedMDN says

  

<input type="radio"> CSS伪类选择器代表任何广播(<input type="checkbox">),复选框(<option>或选项(<select>   在I, J = np.triu_indices(Y.shape[0], 0) rowDiffs = (Y[I, :] - Y[J, :]) )元素中检查或切换为开启状态