我使用的是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';
但无论如何,假设数据存在,您的代码应该已经工作了(正如评论者指出的那样)。
loooove这样做。打我回答:p – 2011-04-28 16:16:12
jQuery将'data- *'属性视为'.data()'。请参阅@amit_g的演示。 – 2011-04-28 16:26:18
@火箭,不知道。我删除了我的警告。它现在是否真的将数据存储为属性?如果不是,如果更新数据而不是属性会发生什么? – 2011-04-28 16:29:01
根据文档:
。数据()
的。数据()方法允许我们附加任何类型的DOM 数据 中的元素可以从圆形 引用并因此从内存 泄漏。
.attr()
的.attr()方法获取属性值 仅在 所述匹配组的第一个元素。
所以,你想要的是使用.attr()方法,像这样:
var xxx = $(this).attr('data-what') || 'default_value';
jQuery将'data- *'属性视为'.data()'。请参阅@amit_g的演示。 – 2011-04-28 16:26:09
@火箭:使用'.attr()'可以更快。检查出http://jsperf.com/data-vs-attr – Shaz 2011-04-28 16:43:48
看起来像$(这个)不是你期望的那样。除此之外,声明看起来很好。 Demo
你确定数据是什么? – Neal 2011-04-28 16:12:50
您是否输出了语句的条件部分以查看它是否可以真正解析为真或假?如果没有,请更改您的条件,以便它可以工作 – 2011-04-28 16:13:37
好的,问题是'$(this)'是我所期待的其他内容:)对不起,我很抱歉:x – Alex 2011-04-28 16:38:55