如果存在,则JQuery检索数据属性,否则获取默认值

时间:2015-02-20 06:41:04

标签: javascript jquery

我知道如何做到这一点,但有任何捷径可以做到这一点

var imgwidth;
if ($(elment).attr('data-imgwidth') !== undefined) {
    // attribute exists
    imgwidth = $(elment).data('imgwidth');
} else {
    // attribute does not exist
    imgwidth = '640px'; //default value
}

我有时会使用

var imgwidth = $(element).data('imgwidth') || '640px';

但我不确定这是否一直有效。例如,如果data属性是布尔值,则失败。

2 个答案:

答案 0 :(得分:1)

如果您希望减少这个简单计算所需的空间量,那么ternary operators成为您的朋友。但是,在大多数用例中,它会牺牲代码的可读性。所以要小心压缩太多。

这是一个与您需要的相关的示例:

// Ternary returns one value if a statement is true, and another if false;
var imgwidth= $(".container").attr('data-imgwidth')?  $(elment).data('imgwidth') : "640px";

答案 1 :(得分:1)

移动ATM,无法举例说明。但有一个建议是创建自己的jquery扩展来包装你的"通常使用的"代码。

$。fn.betterAttr = function(){....}