$("selector").find(":psuedo-class") 没有 return 想要的元素
$("selector").find(":psuedo-class") does not return desired elements
我有以下声明:
var optionsWithAttribute = $(element).find("option[data-attribute]");
我现在想从那个集合中获取选定的选项,所以我写:
var selectedOptions = optionsWithAttribute.find(":selected");
但是这会产生有效的选择器:
"option[data-attribute] :selected"
显然什么都不匹配(感谢 jquery.whiny 帮我解决了这个问题)。正确的选择器是:
"option[data-attribute]:selected"
(注意 ]
后缺少 space)。
显然这是因为对 .find()
的后续调用会在前面加上 space 以便(例如)表达式 $("select").find("option")
产生选择器 select option
而不是 selectoption
。要么我做错了什么 - 在这种情况下请教育我 - 或者 .find()
应该更改为不插入 space 如果传入的选择器是伪 class (即以冒号开头)。
您需要使用过滤器,因为 optionsWithAttribute
包含 option
元素,find()
将查找匹配的后代元素
var selectedOptions = optionsWithAttribute.filter(":selected");
.find()
selects 父元素的子元素,您需要使用 .filter()
它将只给您具有 select 属性的项目
当您使用此代码时 var selectedOptions = optionsWithAttribute.find(":selected");
jquery 将搜索所有具有属性 select 的元素,这些元素来自标签选项 (optionsWithAttribute)
尝试使用filter()方法
Reduce the set of matched elements to those that match the selector or
pass the function's test.
var selectedOptions = optionsWithAttribute.filter(":selected");
"option[data-attribute] :selected"
which obviously matches nothing
绝对是因为不正确,在options里面找不到selected选项,所以改成:
var optionsWithAttribute = $(element).find("option[data-attribute]:selected");
console.log(optionsWithAttribute)
我有以下声明:
var optionsWithAttribute = $(element).find("option[data-attribute]");
我现在想从那个集合中获取选定的选项,所以我写:
var selectedOptions = optionsWithAttribute.find(":selected");
但是这会产生有效的选择器:
"option[data-attribute] :selected"
显然什么都不匹配(感谢 jquery.whiny 帮我解决了这个问题)。正确的选择器是:
"option[data-attribute]:selected"
(注意 ]
后缺少 space)。
显然这是因为对 .find()
的后续调用会在前面加上 space 以便(例如)表达式 $("select").find("option")
产生选择器 select option
而不是 selectoption
。要么我做错了什么 - 在这种情况下请教育我 - 或者 .find()
应该更改为不插入 space 如果传入的选择器是伪 class (即以冒号开头)。
您需要使用过滤器,因为 optionsWithAttribute
包含 option
元素,find()
将查找匹配的后代元素
var selectedOptions = optionsWithAttribute.filter(":selected");
.find()
selects 父元素的子元素,您需要使用 .filter()
它将只给您具有 select 属性的项目
当您使用此代码时 var selectedOptions = optionsWithAttribute.find(":selected");
jquery 将搜索所有具有属性 select 的元素,这些元素来自标签选项 (optionsWithAttribute)
尝试使用filter()方法
Reduce the set of matched elements to those that match the selector or pass the function's test.
var selectedOptions = optionsWithAttribute.filter(":selected");
"option[data-attribute] :selected"
which obviously matches nothing
绝对是因为不正确,在options里面找不到selected选项,所以改成:
var optionsWithAttribute = $(element).find("option[data-attribute]:selected");
console.log(optionsWithAttribute)