我试图通过jQuery的.data()
函数访问html元素的原型。到目前为止,我很困惑。
这是我的代码:
// start prototype definition for myWidget
var myWidget = function() {
console.log('my widget is alive.');
return this;
};
myWidget.prototype.chosenSelect = [];
myWidget.prototype.init = function() {
this.chosenSelect = $('#chooseMe');
// test 1
console.log(this.chosenSelect.data());
// test 2
console.log(this.chosenSelect.data('chosen'));
// test3
console.log(this.chosenSelect.data('Chosen'));
// test4
var chosenObject = this.chosenSelect.data();
console.log(chosenObject.chosen);
};
上面的测试1返回了一个我可以通过Chrome devtools查看的对象。该对象如下所示:
Object
chosen: Chosen
changeCallbacks: Array[0]
etc
etc
etc
我想访问该数据对象中的chosen
对象。但是测试2到4都返回undefined
。我能做错什么?
原型正从另一个库添加到元素中。这是分配发生的摘录:
Chosen.prototype.init = function(select, zidx, isIE7) {
this.select = select;
this.select.data('chosen', this);
答案 0 :(得分:1)
您可以按如下方式访问数据对象。这是一个有效的example。
// Set some data on the widget.
jQuery.data($('#chooseMe')[0], "Chosen", {chosen: "Hello!"});
var myWidget = function() {
console.log('my widget is alive.');
return this;
};
myWidget.prototype.chosenSelect = [];
myWidget.prototype.init = function() {
this.chosenSelect = $('#chooseMe')[0];
// test 1
console.log(jQuery.data(this.chosenSelect));
// test 2
console.log(jQuery.data(this.chosenSelect, "Chosen"));
// test3
console.log(jQuery.data(this.chosenSelect, "Chosen").chosen);
// test4
var chosenObject = jQuery.data(this.chosenSelect, "Chosen");
console.log(chosenObject.chosen);
};
myWidget.prototype.init();