gpt4 book ai didi

javascript - jQuery:是否可以将字段/方法附加到 jQuery 包装器对象?

转载 作者:数据小太阳 更新时间:2023-10-29 04:33:05 26 4
gpt4 key购买 nike

我正在尝试编写一个插件,它将向 jQuery 包装器对象添加一些方法。基本上,我想像这样初始化它:

var smart = $('img:first').smartImage();

“smartImage”插件会将 2 个方法附加到“smart”引用的对象,因此我可以执行如下操作:

smart.saveState();
// do work
smart.loadState();

不幸的是,我不知道如何将这 2 个方法附加到包装器对象。我的代码遵循典型的 jQuery 插件模式:

(function($)
{
$.fn.smartImage = function()
{
return this.each(function()
{
$(this).saveState = function() { /* save */ }
$(this).loadState = function() { /* load */ }
}
}
}

在我调用 smartImage() 之后,既没有定义“saveState”也没有定义“loadState”。我做错了什么?

最佳答案

您不能按照您所演示的方式附加方法/属性,因为正如您所说,jQuery 对象只是它包含的任何 DOM 元素的包装器。您当然可以将方法/属性附加到它,但是当它们再次被 jQuery 选择时,它们将不会保留。

var a = $('.my-object');
a.do_something = function(){ alert('hiya'); }
a.do_something(); // This alerts.

var b = $('.my-object');
b.do_something(); // Freak-out.

如果你想在第二次恢复时jQuery对象上存在一个方法,需要将它赋值给jQuery.fn。所以您可以定义您的辅助方法,将其分配给 jQuery.fn,并使用 jQuery 数据设置为您维护状态...

$.fn.setup_something = function()
{
this.data('my-plugin-setup-check', true);
return this;
}

$.fn.do_something = function()
{
if (this.data('my-plugin-setup-check'))
{
alert('Tada!');
}
return this;
}

var a = $('.my-object').setup_something();
a.do_something(); // Alerts.
$('.my-object').do_something(); // Also alerts.

我建议你看看http://docs.jquery.com/Internals/jQuery.datahttp://docs.jquery.com/Core/data#name

关于javascript - jQuery:是否可以将字段/方法附加到 jQuery 包装器对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/588188/

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