Javascript 检查数据属性是否为空

Javascript 检查数据属性是否为空,javascript,jquery,custom-data-attribute,Javascript,Jquery,Custom Data Attribute,我希望映射表中所有的td单元格,并检查它们的数据属性。如果属性/his分配的值不是空的,我想console.logit 我现在得到了这个,但它似乎没有正常工作(它只是说所有的td都不是空的)。另外,我不知道为什么map函数中的this指向窗口对象,而不是确切的td。你知道我遗漏了什么吗 function checkTds() { var $tab = $('table td'); $.map($tab, function(){ console.log($(this

我希望映射表中所有的
td
单元格,并检查它们的
数据属性。如果属性/his分配的值不是空的,我想
console.log
it

我现在得到了这个,但它似乎没有正常工作(它只是说所有的
td
都不是空的)。另外,我不知道为什么map函数中的
this
指向
窗口
对象,而不是确切的
td
。你知道我遗漏了什么吗

function checkTds() {
    var $tab = $('table td');
    $.map($tab, function(){
        console.log($(this));
        if ($tab.attr("custom-data-attribute") !== "") {
            console.log($(this));
        }
    });
}

checkTds();

您正在使用
map
,它将自己的变量分配给迭代列表:

回拨 类型:函数(objectelementofarray,Integer indexInArray)=>Object 处理每个项目的函数。函数的第一个参数是数组项,第二个参数是数组中的索引,函数可以返回任何值。返回的数组将展平为结果数组。在函数中,这是指全局(窗口)对象

使用前缀
data
创建自定义属性也是标准的:
data-«yourname»

函数检查TDS(){
var$tab=$('table td');
$.map($选项卡,函数(元素){
//看看这里的元素var
//还要检查属性是否存在!
if($(元素).attr(“自定义数据属性”)&&($(元素).attr(“自定义数据属性”)!=“”){
log($(元素).attr(“自定义数据属性”);
}
});
}
checkTds()


您应该使用
$tab.map()
,而不是
$.map($tab)
这两种方法都有效。由于节点列表可以在jQuery中迭代,因此您也可以使用
$tab.map()
。您可以,但它们不同
.map()
专门用于处理jquery集合我明白了……好了,现在当我使用元素变量时,它确实会打印所有的td,但我希望它只打印那些分配了一些值的td(并显示该值)。这就是我的td的样子:看看我添加的堆栈片段。也可以使用
.length
而不是
!==“”