我刚刚编写了一个非常简单的代码片段来了解jQuery ROW
的功能如何,代码如下:
data()
现在,此代码的目标是使用$(function () {
carousel = function() {
this.prop1 = 1;
this.prop2 = 'two';
this.prop3 = 3;
}
var _str = $('#test'),
$str_data = _str.data();
console.log($str_data);
data = _str.data('carousel');
if (!data) _str.data('carousel' , new carousel());
console.log(data);
if (!data) {
console.log('no data');
}
});
运算符将数据()添加到div
元素,然后检查是否添加了该数据,但是在我的代码片段中我使用下面的代码行向new
元素添加数据:
div
当我再次检查以查看下一行是否实际添加了数据时:
if (!data) _str.data('carousel' , new carousel());
测试通过,这意味着没有添加任何数据。那我错过了什么?
答案 0 :(得分:1)
如果没有数据,则表示您正在更新与该元素关联的数据,但data
变量引用的值未更新,这就是为什么它仍然将undefined
作为其值。< / p>
$(function () {
var carousel = function () {
this.prop1 = 1;
this.prop2 = 'two';
this.prop3 = 3;
}
var _str = $('#test'),
$str_data = _str.data();
console.log($str_data);
var data = _str.data('carousel');
if (!data) {
//create a new carousel and assign it to data so that it gets a new value
data = new carousel();
//store the new carousel value
_str.data('carousel', data);
}
console.log(data);
if (!data) {
console.log('no data');
}
});
演示:Fiddle
答案 1 :(得分:1)
问题是您没有更新data
变量的值。您需要在设置轮播后再次设置data
值或直接调用jquery函数.data()
,如下所示:
data = _str.data('carousel');
// this condition is not updating the variable defined above
if (!data) {
_str.data('carousel' , new carousel());
}
console.log(data);
// you have to update the variable value or to call as
if (!_str.data('carousel')) {
console.log('no data');
}