gpt4 book ai didi

jquery插件如何维护对象的状态

转载 作者:行者123 更新时间:2023-12-03 22:51:27 24 4
gpt4 key购买 nike

我正在尝试创建一个简单的插件,但我遇到了如何管理插件状态的问题。

(function ($) {
// Static things for plugin goes here
var uiHtml = "<div class='gaw-box'>" +
"</div>";



var methods = {


init: function (options) {

return this.each(function () {
// Create UI
$(this).html(uiHtml);

if (options) {

var defaults = {
name:"N/A"
};

var opt = $.extend(defaults, options);
$(this).find(".gaw-name").html(opt.name);
}

// Visual Events attach
var uiobj = $(this).find(".gaw-box");
$(uiobj).mouseenter(function () {
if (!this.isSelected) {
$(this).css('border', '1px solid red');
}
});

$(uiobj).mouseleave(function () {
if (!this.isSelected) {
$(this).css('border', '1px solid black');
}
});

$(uiobj).click(function () {
this.isSelected = !this.isSelected;
if (this.isSelected) {
$(this).css('border', '3px solid red');
}
else {
$(this).css('border', '1px solid black');
}

});

});

},
getIsSelected: function (options) {

return this.isSelected; // ALWAYS FALSE
},
destroy: function () { }
};

$.fn.gateaway = function (method) {
var plugin = this;

plugin.isSelected = false;

if (methods[method])
{
return methods[method].apply(plugin, Array.prototype.slice.call(arguments, 1));
} else if (typeof method === 'object' || !method) {
return methods.init.apply(plugin, arguments);
} else {
$.error('Method ' + method + ' does not exist on jQuery.pluginName');
}
};
})(jQuery);

我想要实现的是保存插件(对象)的状态,例如是否选择了它。我正在调用我的插件,例如

$("#gate").gateaway('getIsSelected')

结果总是假的...我知道问题出在“这个”范围,这是我第一次在客户端上开发,第二次我今天需要完成它:-),因此,如果可以指出我在哪里或如何组织插件以便能够保存每个插件的状态,它将拯救我:-)

最佳答案

官方的 jQuery 建议是使用 jQuery UI Widget Factory因为它为您提供了很多存储状态(以及其他内容)的好选项,但是使用 data 函数在 jQuery 元素上存储状态并不难,如下所示:

$.fn.myplugin = function (options) {

var create = function (el, options) {
// Find existing state if we're running this again on same element
var state = el.data("myplugin") || {};

makeActualPlugin(el, state);

state.something = "Store me for later";
el.data("myplugin", state);
return el;
};

this.each(function () {
create($(this), options);
});
};

关于jquery插件如何维护对象的状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15337999/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com