Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.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。循环通过div的子集_Javascript_Jquery - Fatal编程技术网

JavaScript。循环通过div的子集

JavaScript。循环通过div的子集,javascript,jquery,Javascript,Jquery,我有这段HTML(实际上要大得多),但我用它作为示例来演示我的问题。所以我要做的是循环遍历所有的'div.col',并且对于其中设置了'data text'的每个div,我要将该'data text'推送到一个数组中 我该怎么做 <div class="holder"> <div class="col"> <div data-text=""></div>

我有这段HTML(实际上要大得多),但我用它作为示例来演示我的问题。所以我要做的是循环遍历所有的'div.col',并且对于其中设置了'data text'的每个div,我要将该'data text'推送到一个数组中

我该怎么做

<div class="holder">
    <div class="col">
        <div data-text=""></div>
        <div data-text="lorem"></div>
        <div data-text=""></div>
    </div>
    <div class="col">
        <div data-text="hey"></div>
        <div data-text=""></div>
        <div data-text="hello"></div>
    </div>
    <div class="col">
        <div data-text=""></div>
        <div data-text="lorem"></div>
        <div data-text=""></div>
    </div>
</div>

试试这个片段:

var项目=[];
$('div.col div[data text]')。每个(函数(){
var text=$(this).data(“text”);
如果(text&&text.length>0){
项目。推送(文本);
}
});
控制台日志(项目)

试试这个片段:

var项目=[];
$('div.col div[data text]')。每个(函数(){
var text=$(this).data(“text”);
如果(text&&text.length>0){
项目。推送(文本);
}
});
控制台日志(项目)

您可以使用
map()
get()
返回数组

var arr=$('.holder div').map(函数(){
if($(this.data('text'))返回$(this.data('text');
}).get()
控制台日志(arr)

您可以使用
map()
get()
返回数组

var arr=$('.holder div').map(函数(){
if($(this.data('text'))返回$(this.data('text');
}).get()
控制台日志(arr)

纯js方法

var elems=document.querySelectorAll('.holder.col div[data text]:not([data text=”“]),
res=Array.from(elems.map)(v=>v.getAttribute('data-text');
控制台日志(res)

纯js方法

var elems=document.querySelectorAll('.holder.col div[data text]:not([data text=”“]),
res=Array.from(elems.map)(v=>v.getAttribute('data-text');
控制台日志(res)

要实现这一点,您可以仅选择具有值的
数据文本
属性的元素,然后将结果元素映射到数组中。试试这个:

var arr=$('.holder.col div[data text]:not([data text=”“])).map(function(){
返回$(this.data('text');
}).get();
控制台日志(arr)

要实现这一点,您可以仅选择具有值的
数据文本
属性的元素,然后将结果元素映射到数组中。试试这个:

var arr=$('.holder.col div[data text]:not([data text=”“])).map(function(){
返回$(this.data('text');
}).get();
控制台日志(arr)


我希望您不介意我在解决方案中使用此
选择器。我喜欢。我希望您不介意我在解决方案中使用此
not
选择器。我喜欢。