gpt4 book ai didi

javascript - jQuery 插件存储值

转载 作者:行者123 更新时间:2023-12-02 19:44:31 25 4
gpt4 key购买 nike

我正在开发 jquery 插件,但在保存属性以供以后使用时遇到问题。在下面的示例中,当我查找 18, 50, 18 时,控制台输出为 18, 50, 50。我明白为什么会发生这种情况,但我找不到保存 properties 以便在多种不同方法中使用的好方法。我有一种感觉,我错过了一些非常明显的东西,但我只是没有看到它。

<html>
<body>
<h1>Hello</h1>
<h2>World</h2>

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js"></script>
<script type="text/javascript">
(function ($) {
var commonOperations, methods, properties;

commonOperations = function () {
console.log(properties.height);
};

methods = {
init : function (overrides) {
var defaults;
defaults = { height: 18 };
properties = $.extend(defaults, overrides);

commonOperations();
},

foo : function () {
commonOperations();
}
};

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

$(document).ready(function () {
$("h1").myPlugin();
$("h2").myPlugin({ height: 50 });
$("h1").myPlugin("foo");
});
</script>
</body>
</html>

最佳答案

这取决于插件的性质,但使用 .data() 来存储每个元素的属性可能是有意义的。

   init: function(overrides) {
return this.each(function() {
var defaults = { whatever: "foo" };
$(this).data('properties', $.extend(defaults, overrides));
});
}

然后其他方法总是从元素中提取“属性”对象:

    foo : function () {
return this.each(function() {
commonOperations.call(this, $(this).data('properties'));
});
}

关于javascript - jQuery 插件存储值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10036276/

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