javascript - $ ("selector").find (":psuedo-class") 未返回所需元素

标签 javascript jquery jquery-selectors

我有以下声明:

var optionsWithAttribute = $(element).find("option[data-attribute]");

我现在想从该集中获取选定的选项,所以我写道:

var selectedOptions = optionsWithAttribute.find(":selected");

但是这会产生有效的选择器:

"option[data-attribute] :selected"

这显然不匹配(感谢 jquery.whiny 帮助我解决这个问题)。正确的选择器是:

"option[data-attribute]:selected"

(注意 ] 后缺少空格)。

显然这是因为对 .find() 的后续调用会在前面添加一个空格,以便(例如)表达式 $("select").find("option") 产生选择器 select option,而不是 selectoption。要么我做错了什么 - 在这种情况下请教育我 - 或者如果传入的选择器是伪类(即以冒号)。

最佳答案

您需要使用过滤器,因为 optionsWithAttribute 包含 option 元素,find() 将查找匹配的后代元素

var selectedOptions = optionsWithAttribute.filter(":selected");

关于javascript - $ ("selector").find (":psuedo-class") 未返回所需元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35599396/

相关文章:

javascript - 自定义 Angular 指令、控制台日志、DOM 更新、屏幕不

javascript - 在 JavaScript 和 JSON 中传递 Google 脚本值

javascript - 具有相同提交/点击功能的 AJAX 多个表单

javascript - 书签中的 jQuery 就绪

jQuery - 编辑父级元素的内容

javascript - 将 jQuery 选择器与 'this' 组合

javascript - 你如何在 jquery 中进行 .hover 延迟

javascript - 为什么 Formidable `form.parse` 回调没有在 Express 中运行?

javascript - 不使用匿名函数并有权访问 this 和 e

javascript - 尝试通过 ajax 调用向 servlet 发送可序列化数据时,得到的响应为 "servlet temporarily moved "