4

我在元素上使用 html5“数据”属性,并且我想仅在变量存在且不为空时将属性值分配给变量:

var xxx = $(this).data('what') ? $(this).data('what') : 'default_value';

但它不起作用。我总是得到默认值...

4

3 回答 3

5

使用短路更简单、更高效:

var xxx = $(this).data('what') || 'default_value';

但是,假设数据存在(正如评论者指出的那样),您的代码无论如何都应该可以工作。

于 2011-04-28T16:14:29.120 回答
3

看起来 $(this) 不是您期望的那样。除此之外,该声明看起来不错。演示

于 2011-04-28T16:20:01.610 回答
2

根据文档:

.data()

.data() 方法允许我们以一种安全的方式将任何类型的数据附加到 DOM 元素,从而避免循环引用,从而避免内存泄漏。

.attr()

.attr() 方法仅获取匹配集中第一个元素的属性值。

所以你想要的是使用.attr()方法,如下所示:

var xxx = $(this).attr('data-what') || 'default_value';
于 2011-04-28T16:13:36.107 回答