我在元素上使用 html5“数据”属性,并且我想仅在变量存在且不为空时将属性值分配给变量:
var xxx = $(this).data('what') ? $(this).data('what') : 'default_value';
但它不起作用。我总是得到默认值...
我在元素上使用 html5“数据”属性,并且我想仅在变量存在且不为空时将属性值分配给变量:
var xxx = $(this).data('what') ? $(this).data('what') : 'default_value';
但它不起作用。我总是得到默认值...
使用短路更简单、更高效:
var xxx = $(this).data('what') || 'default_value';
但是,假设数据存在(正如评论者指出的那样),您的代码无论如何都应该可以工作。
看起来 $(this) 不是您期望的那样。除此之外,该声明看起来不错。演示
根据文档:
.data()
.data() 方法允许我们以一种安全的方式将任何类型的数据附加到 DOM 元素,从而避免循环引用,从而避免内存泄漏。
.attr()
.attr() 方法仅获取匹配集中第一个元素的属性值。
所以你想要的是使用.attr()方法,如下所示:
var xxx = $(this).attr('data-what') || 'default_value';