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

Javascript 如果存在,JQuery检索数据属性,否则获取默认值,javascript,jquery,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;
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';

但我不确定这是否总是有效的。例如,如果数据属性是布尔值,则它将失败。

如果您希望减少此简单计算占用的空间量,这就是您的朋友所在。然而,在大多数用例中,它牺牲了代码的可读性。因此,在尝试压缩太多时要小心

下面是一个与您需要的内容相关的示例:

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

移动ATM,不能给你一个例子。但有一个建议是创建自己的jquery扩展来封装“常用”代码


$.fn.betteratr=function(){….}

对于布尔值,它会失败。。。例如,我的元素的数据showtumbs=“false”,在本例中为$(元素)。数据('showtumbs')| | true将计算为true。
var imgwidth=($(元素)。数据('imgwidth')!==未定义)$(元素)。数据('imgwidth'):'640px'