gpt4 book ai didi

jquery - 编写 jQuery 插件,向 jQuery 对象添加属性

转载 作者:行者123 更新时间:2023-12-01 08:28:40 27 4
gpt4 key购买 nike

我正在尝试编写一个创建 ul 列表的插件。让它工作,但我不知道如何判断它是否已经加载。我相信这是因为每次我调用它时它都会创建一个新实例。有没有办法解决这个问题。

我将此代码用于插件:

$.fn.addResultList = function (options) {
var constructor = $('<ul></ul>'),
offset = $(this).offsetParent();

constructor.addClass(options.className);
constructor.append('<li>Lorem ipsum</li>');
constructor.css({
backgroundColor : '#fff',
left : offset.left + 'px',
padding : '10px',
position : 'absolute',
top : offset.top + 'px',
zIndex : '10'
});

$(this).after(constructor);

modalObjects.push('.' + options.className);

$('.' + options.className).hover(function() {
mouse_is_inside=true;
}, function() {
mouse_is_inside=false;
});


this.isConstructed = true;

return this;
}

并称其为:

$('#related_project_name').addResultList({
className : 'related_result_list',
data : $.parseJSON(data),
callback : function () {

}
});

但是当我第二次调用它时,它说 this.isConstructed 未定义。

有什么想法吗?

..弗雷德里克

最佳答案

由于这是一个 jQuery 插件,因此您应该始终返回一个 jQuery 扩展对象。这听起来可能无关,但它实际上应该可以解决您的问题。不返回 this,而是返回 $(this).extend( { Construction: true } );。您将通过构造的属性取回扩展元素。

如果您正在尝试创建一个可以像 Ruby 这样的语言中的对象一样对待的对象(例如,您希望能够说 someResultList.reload(); 或类似内容) ,那么您可能需要查看 John Resig's non-jQuery-dependent-but-complementary JavaScript Inheritance mini-library .

如果您提供有关您到底想要做什么(“行为方面”)的更多详细信息,那么可能会出现更多帮助:)

关于jquery - 编写 jQuery 插件,向 jQuery 对象添加属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1567246/

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