Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery-选择具有;“隐藏的”;each()循环中的属性_Javascript_Jquery_Each - Fatal编程技术网

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 sorry
jQuery(this).is(“[hidden]”)上得到了“undefined is not a function”(未定义的不是函数)。
我犯了一个错误后,对我的问题做了一些修改。当然,我想查找所有
选项
元素,而不是
选择
。我还想坚持我介绍的设置,因为我稍后将把找到的元素(
value
)推到一个单独的数组中,如果所有的
选项
元素都被隐藏,则隐藏
option
。@luqo33那么这就是您试图做的最终目标吗?检查是否隐藏了所有选项并隐藏optgroup@ᾠῗᵲᄐᶌ 就是这个。但在这一点上,它归结为使用正确的条件来代替我写的条件。@Arun令人惊讶的是,我在
.is()
@luqo33 sorry
jQuery(this).is('[hidden]')
当您没有
data hidden
属性时,使用的是
.data('hidden')
。只有
隐藏的
属性当您没有
数据隐藏的
属性时,才使用
.data('hidden')
。你只有一个
隐藏的
属性这是一个非常简洁的方法。回答得好!这是一个非常巧妙的方法。回答得好!