是否有一些方法,我可以运行以下:
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的属性时?
当前回答
你可以通过css属性选择来检查
if ($('#dataTable').is('[data-timer]')) {
// data-timer attribute exists
}
其他回答
为了提供与上述不同的答案;你可以像这样用Object.hasOwnProperty(…)检查它:
if( $("#dataTable").data().hasOwnProperty("timer") ){
// the data-time property exists, now do you business! .....
}
或者,如果你有多个数据元素想要遍历,你可以变量.data()对象并像这样遍历它:
var objData = $("#dataTable").data();
for ( data in objData ){
if( data == 'timer' ){
//...do the do
}
}
并不是说这个解决方案比这里的任何其他解决方案都好,但至少它是另一种方法……
还有:
if ($('#dataTable[data-timer]').length > 0) {
// logic here
}
if (typeof $("#dataTable").data('timer') !== 'undefined')
{
// your code here
}
var data = $("#dataTable").data('timer');
var diffs = [];
if( data.length > 0 ) {
for(var i = 0; i + 1 < data.length; i++) {
diffs[i] = data[i + 1] - data[i];
}
alert(diffs.join(', '));
}
我需要一个简单的布尔值。因为它没有定义不存在,而不是假的,我使用!!转换为布尔值:
var hasTimer = !!$("#dataTable").data('timer');
if( hasTimer ){ /* ....... */ }
另一种解决方案是使用过滤器:
if( $("#dataTable").filter('[data-timer]').length!==0) { /* ....... */ }