gpt4 book ai didi

javascript - 插件初始化后如何调用jquery插件内部的函数

转载 作者:行者123 更新时间:2023-12-01 03:38:30 24 4
gpt4 key购买 nike

I',创建我自己的 jQuery 插件,该插件可以分配给文档中的多个元素。在某些事件中,我想为该特定元素调用插件内部的函数,但一切都让我发疯。插件本身可以工作,但存在外部调用问题。

简单的插件:

(function ( $ ) {
$.fn.myPlugin = function (options) {
var settings = $.extend({
someOption: ""
}, options);
return this.each(function () {
_init();
_load();
});
function _init() {
//some action..
}
function _load() {
//some action..
}
};
$.fn.myPlugin.reload = function () {
_load(); //or this._load();
}
}( jQuery ));

在 html 中:

<div id="div1"></div>
<button id="button1">Click to reload</div>
<script>
$(document).ready(function() {
var A=$("div1").myPlugin({
someOption:"someValue"
});
$("#button1").click(function(){
A.reload();
});
});
</script>

返回总是 _load() 未定义...任何想法都会非常感激。

最佳答案

您在定义函数之前返回,如果 _load 不在更高的范围内,则无法从重新加载函数访问它:

(function ( $ ) {
//function definitions:
function _init() {
//some action..
}
function _load() {
//some action..
}


$.fn.myPlugin = function (options) {
var settings = $.extend({
someOption: ""
}, options);

return this.each(function () {
_init();
_load();
});

};
$.fn.myPlugin.reload = function () {
_load(); //
}
}( jQuery ));

请注意,可以这样访问它:

 $.myPlugin.reload();

Reload 不是 myPlugin 实例的一部分。

如果您想为每个实例返回自定义对象,请执行以下操作:

 (function ( $ ) {
$.fn.myPlugin = function (options) {
var settings = $.extend({
someOption: ""
}, options);

//function definitions:
function _init() {
//some action..
}
function _load() {
//some action..
}
//iterate
this.each(function () {
_init();
_load();
});

return {
reload:_load,
};
};
}( jQuery ));

现在你可以做

$("test").myPlugin().reload();

关于javascript - 插件初始化后如何调用jquery插件内部的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44073917/

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