0

我想从 2 个不同的元素模式中找到一些变量。

var something = $('.class').attr('data-something');

if(typeof something === 'undefined') {
    var something = $('.class').attr('data-another'); 
}

if(typeof something != 'undefined') {
    // do action...
    console.log(something); 
}

我只想从 attr 获取一些数据data-someting="mydata"

如果data-someting="mydata"找不到,请查找数据表data-another

那就行动吧……

我做得对吗?或另一种做得更好的正确方法?

什么事Try Catch

4

3 回答 3

1

有些浏览器会拥有它undefined,而有些浏览器会返回false。因此,这是一个更强大的版本:

if (typeof something === 'undefined' || something === false) {
    // try another attribute
} else {
    // do your stuff
}

更新:

嗯,根据文档

从 jQuery 1.6 开始,.attr() 方法返回undefined尚未设置的属性。

所以,很可能,他们从 1.6 开始就明确地确保了这一点,而我的信息false已经过时了。在这种情况下,您自己的代码是完全正确的。

于 2013-05-31T08:47:55.350 回答
1

您可以/应该使用 $.data(); 访问数据属性;

例如

var something = $('.class').data('something');
于 2013-05-31T08:48:13.520 回答
1
 var something = $('.class').attr('data-something') || $('.class').attr('data-another')

这将适用于undefinedfalse

于 2013-05-31T08:50:24.687 回答