我希望映射表格中的所有td
/ s /单元格,并检查其data
属性。如果属性/他的指定值不为空,我想console.log
它。
我现在得到了这个,但它似乎没有正常工作(它只是说所有td
都不是空的)。此外,我不确定为什么地图功能中的this
指向window
对象,而不是指向td
。有什么想法我错过了什么?
function checkTds() {
var $tab = $('table td');
$.map($tab, function(){
console.log($(this));
if ($tab.attr("custom-data-attribute") !== "") {
console.log($(this));
}
});
}
checkTds();
答案 0 :(得分:3)
您正在使用map
将自己的变量分配给迭代列表:
回调 类型:Function(Object elementOfArray,Integer indexInArray)=>宾语 处理每个项目的功能。函数的第一个参数是数组项,第二个参数是数组中的索引函数可以返回任何值。返回的数组将展平为生成的数组。在函数内,这指的是全局(窗口)对象。
使用前缀data
制作自定义属性也是标准的:data-«yourname»
。
function checkTds() {
var $tab = $('table td');
$.map($tab, function(element) {
//look at the element var here
//also check if the attribute exists!
if ($(element).attr("custom-data-attribute") && $(element).attr("custom-data-attribute") !== "") {
console.log($(element).attr("custom-data-attribute"));
}
});
}
checkTds();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
<tr>
<td custom-data-attribute="1"></td>
<td></td>
<td></td>
<td custom-data-attribute="4"></td>
</tr>
</table>
旁注:我个人建议在使用jQuery时不要使用前缀为$
的变量。它使得它们更容易与实际的jQuery函数混淆。