是否有一些方法,我可以运行以下:
var data = $("#dataTable").data('timer');
var diffs = [];
for(var i = 0; i + 1 < data.length; i++) {
diffs[i] = data[i + 1] - data[i];
}
alert(diffs.join(', '));
只有在id为#dataTable的元素上有一个名为data-timer的属性时?
是否有一些方法,我可以运行以下:
var data = $("#dataTable").data('timer');
var diffs = [];
for(var i = 0; i + 1 < data.length; i++) {
diffs[i] = data[i + 1] - data[i];
}
alert(diffs.join(', '));
只有在id为#dataTable的元素上有一个名为data-timer的属性时?
当前回答
在我看来,这是最简单的解决方案,选择所有具有特定数据属性的元素:
var data = $("#dataTable[data-timer]");
var diffs = [];
for(var i = 0; i + 1 < data.length; i++) {
diffs[i] = data[i + 1] - data[i];
}
alert(diffs.join(', '));
下面是它如何工作的截图。
其他回答
你可以创建一个非常简单的jQuery-plugin来查询一个元素:
$.fn.hasData = function(key) {
return (typeof $(this).data(key) != 'undefined');
};
然后你可以简单地使用$("#dataTable").hasData('timer')
陷阱:
仅当值不存在时才返回false (is undefined);如果它被设置为false/null, hasData()仍然会返回true。 它不同于内置的$. hasdata(),后者只检查是否设置了元素上的任何数据。
你可以使用jQuery的hasData方法。
http://api.jquery.com/jQuery.hasData/
hasdata (element)的主要优点是,如果当前不存在数据对象,它不会创建数据对象并将其与元素关联。相比之下,jQuery.data(element)总是返回一个数据对象给调用者,如果之前不存在数据对象,则创建一个。
这只会检查元素上是否存在任何数据对象(或事件),它不能确认它是否有一个“timer”对象。
if ($("#dataTable").data('timer')) {
...
}
注意只有当数据属性不是空字符串或“假”值(如0或false)时,才返回true。
如果你想检查data属性是否存在,即使是空的,也要这样做:
if (typeof $("#dataTable").data('timer') !== 'undefined') {
...
}
if (typeof $("#dataTable").data('timer') !== 'undefined')
{
// your code here
}
我发现这种方法在动态设置数据元素时效果更好:
if ($("#myelement").data('myfield')) {
...
}