Javascript $(“选择器”).find(“psuedo类”)不返回所需的元素

Javascript $(“选择器”).find(“psuedo类”)不返回所需的元素,javascript,jquery,jquery-selectors,Javascript,Jquery,Jquery Selectors,我有以下声明: var optionsWithAttribute = $(element).find("option[data-attribute]"); 现在我想从该集中获取所选选项,因此我写: var selectedOptions = optionsWithAttribute.find(":selected"); 但是,这会产生有效的选择器: "option[data-attribute] :selected" 这显然不匹配(感谢你帮我解决了这个问题)。正确的选择器应为: "opti

我有以下声明:

var optionsWithAttribute = $(element).find("option[data-attribute]");
现在我想从该集中获取所选选项,因此我写:

var selectedOptions = optionsWithAttribute.find(":selected");
但是,这会产生有效的选择器:

"option[data-attribute] :selected"
这显然不匹配(感谢你帮我解决了这个问题)。正确的选择器应为:

"option[data-attribute]:selected"
(注意
]
后面缺少空格)


显然,这是因为对
.find()
的后续调用预先添加了一个空格,以便(例如)表达式
$(“select”).find(“option”)
生成选择器
select option
,而不是
selectoption
。如果传入的选择器是伪类(即以冒号开头),则应该将find()更改为不插入空格。

您需要使用过滤器,因为
选项WithAttribute
包含
选项
元素,
find()
将查找匹配的子元素

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

您需要使用筛选器作为
选项WithAttribute
包含
选项
元素,
find()
将查找匹配的子元素

var selectedOptions = optionsWithAttribute.filter(":selected");
.find()
选择父元素的子元素,您需要使用
.filter()
,它将只提供具有select属性的项

使用此代码时
var selectedOptions=options with attribute.find(“:selected”)
jquery将搜索从标记选项(optionsWithAttribute)中选择属性的所有元素。

.find()
选择父元素的子元素,您需要使用
.filter()
,它将只提供具有select属性的项

使用此代码时
var selectedOptions=options with attribute.find(“:selected”)jquery将搜索从标记选项(optionsWithAttribute)中选择属性的所有元素。

尝试使用方法

将匹配的元素集减少为与选择器或 通过函数的测试

尝试使用方法

将匹配的元素集减少为与选择器或 通过函数的测试

“选项[数据属性]:选中”
这显然不匹配

因为这是不正确的,所以您无法在选项中找到所选选项,所以请将其更改为:

var optionsWithAttribute = $(element).find("option[data-attribute]:selected");
console.log(optionsWithAttribute)
“选项[数据属性]:选中”
这显然不匹配

因为这是不正确的,所以您无法在选项中找到所选选项,所以请将其更改为:

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

使用.filter()。这与您是否正在使用伪类无关,并且没有出现前置:.find()方法查找子元素。
.find()
添加一个空格,因为空格和
.find()
是同一回事
$(“选择”).find(“选项”)
表示返回
select
元素下的所有
option
元素-这与
$(“选择选项”)
@freedomn-m相同,这可能不在操作范围内,但您可以使用
.find()
作为
$(“选择”).find(“选项”)或
$(“选择选项”)
如果您已经有了对象,请使用第一个,例如
var s=$(“选择”);s.find(“选项”)
。如果您有/想要它作为文本,请使用第二个。您也可以使用
$(“选项”,s);
,但许多人觉得这很困惑,更喜欢
。find
格式。哇,现在我觉得自己很笨。谢谢大家-我知道
。filter()
存在,但它不允许指定选择器。使用.filter()。这与您是否使用伪类无关,并且没有出现前置:.find()方法查找子元素。
.find()
添加一个空格,因为空格和
.find()
是同一回事。
$(“select”).find(“option“
表示返回
select
元素下的所有
option
元素-这与
$(“select option”)
@freedomn-m相同,这可能不在OP中,但您可以使用
.find()
作为
$(“select”).find(“option”)
$(“select option”)来判断哪个更好
如果你已经有了对象,就使用第一个,例如
var s=$(“select”);s.find(“option”)
。如果你有/想要它作为文本,就使用第二个。你也可以使用
$(“option”,s);
但是很多人觉得这很混乱,更喜欢
。find
格式。哇,现在我觉得自己很笨。谢谢大家-我知道
.filter()
存在,但不允许指定选择器。