Javascript jQuery-选择具有;“隐藏的”;each()循环中的属性
我需要选择所有添加了“隐藏”属性的Javascript jQuery-选择具有;“隐藏的”;each()循环中的属性,javascript,jquery,each,Javascript,Jquery,Each,我需要选择所有添加了“隐藏”属性的元素。这是加价: <optgroup label="Label 1"> <option value="978" hidden>Option 1</option> <option value="987" hidden>Option 2</option> <option value="987" hidden>Option 3</option> <
元素。这是加价:
<optgroup label="Label 1">
<option value="978" hidden>Option 1</option>
<option value="987" hidden>Option 2</option>
<option value="987" hidden>Option 3</option>
<option value="987">Option 4</option>
</optgroup>
不幸的是,内部的代码条件从来都不是真的。这里缺少什么?使用-下面的选择器将迭代所有选项
元素,这些元素具有隐藏
属性,并且是optgroup
元素的后代
jQuery('optgroup option[hidden]').each(function () {
console.log('Found it!', this);
});
保持你的结构
jQuery('optgroup').each(function () {
jQuery(this).find('option').each(function () {
if (jQuery(this).is('[hidden]')) {
console.log('Found it!');
}
});
});
使用-下面的选择器将迭代所有选项
元素,这些元素具有隐藏
属性,并且是optgroup
元素的后代
jQuery('optgroup option[hidden]').each(function () {
console.log('Found it!', this);
});
保持你的结构
jQuery('optgroup').each(function () {
jQuery(this).find('option').each(function () {
if (jQuery(this).is('[hidden]')) {
console.log('Found it!');
}
});
});
您的问题是,当您真正使用实际(无效)属性时,您正在检查数据属性 我认为你根本不需要循环来做你想做的事。您可以简单地使用一个函数来获取满足特定条件的所有optgroup
var optgroupsWithAllHiddenOptions = jQuery('optgroup').filter(function(){
return jQuery(this).find('option[hidden]').length == jQuery(this).find('option').length;
});
或者只是
jQuery('optgroup').filter(function(){
return jQuery(this).find('option[hidden]').length == jQuery(this).find('option').length;
}).hide();
jQuery('optgroup')。过滤器(函数(){
返回$(this.find('option[hidden]')。长度==$(this.find('option')。长度;
}).hide()代码>
选择1
选择2
选择3
选择4
选择1
选择2
选择3
选择4
选择1
选择2
选择3
选择4
选择1
选择2
选择3
选择4
问题在于,在实际使用(无效)属性时,您正在检查数据属性
我认为你根本不需要循环来做你想做的事。您可以简单地使用一个函数来获取满足特定条件的所有optgroup
var optgroupsWithAllHiddenOptions = jQuery('optgroup').filter(function(){
return jQuery(this).find('option[hidden]').length == jQuery(this).find('option').length;
});
或者只是
jQuery('optgroup').filter(function(){
return jQuery(this).find('option[hidden]').length == jQuery(this).find('option').length;
}).hide();
jQuery('optgroup')。过滤器(函数(){
返回$(this.find('option[hidden]')。长度==$(this.find('option')。长度;
}).hide()代码>
选择1
选择2
选择3
选择4
选择1
选择2
选择3
选择4
选择1
选择2
选择3
选择4
选择1
选择2
选择3
选择4
自从我犯了一个错误后,我对我的问题做了一些修改。当然,我想查找所有选项
元素,而不是选择
。我还想坚持我介绍的设置,因为我稍后将把找到的元素(value
)推到一个单独的数组中,如果所有的选项
元素都被隐藏,则隐藏option
。@luqo33那么这就是您试图做的最终目标吗?检查是否隐藏了所有选项并隐藏optgroup@ᾠῗᵲᄐᶌ 就是这个。但在这一点上,它归结为使用正确的条件来代替我写的条件。@Arun令人惊讶的是,我在.is()
@luqo33 sorryjQuery(this).is(“[hidden]”)上得到了“undefined is not a function”(未定义的不是函数)。
我犯了一个错误后,对我的问题做了一些修改。当然,我想查找所有选项
元素,而不是选择
。我还想坚持我介绍的设置,因为我稍后将把找到的元素(value
)推到一个单独的数组中,如果所有的选项
元素都被隐藏,则隐藏option
。@luqo33那么这就是您试图做的最终目标吗?检查是否隐藏了所有选项并隐藏optgroup@ᾠῗᵲᄐᶌ 就是这个。但在这一点上,它归结为使用正确的条件来代替我写的条件。@Arun令人惊讶的是,我在.is()
@luqo33 sorryjQuery(this).is('[hidden]')
当您没有data hidden
属性时,使用的是.data('hidden')
。只有隐藏的
属性当您没有数据隐藏的
属性时,才使用.data('hidden')
。你只有一个隐藏的属性这是一个非常简洁的方法。回答得好!这是一个非常巧妙的方法。回答得好!