如何在页面加载时保持accordions
不被初始化...我希望它只能从方法内部运行(当然不是init()
)但是只在需要
$.extend($.fn, {
accordion: function () {
var accordion = (function () {
var accordions = (function () {
alert('test');
return 1;
})();
return {
init: function (el) {
el.click(function (e) {
accordion.show(el);
});
},
show: function (el) {
console.log(accordions);
}
}
})();
this.each(function() {
accordion.init($(this));
});
}
});
我希望我提供了足够的细节: - \
答案 0 :(得分:0)
$.extend($.fn, {
accordion: function () {
var accordion = (function () {
var accordions = (function () {
alert('test');
return 1;
})();
return {
init: function (el) {
el.click(function (e) {
accordion.show(el);
});
},
show: function (el) {
console.log(accordions);
}
}
})();
}
});
function theFunctionYouWanted(){
$('selector').each(function(el) {
var $el = $(el);
$el.accordion().init($el);
});
}
使用.extend扩展jQuery以包含.accordion方法。此方法返回一个具有init方法的对象,因此通过调用$ object.accordion()可以获得对accordion对象的引用,然后可以调用它的init方法将元素传递给它。
$el.accordion().init($el)
如果你想看看这是如何做到的,你应该看看任何伟大的jquery ui插件。如果您正在尝试创建类似的插件样式,那么jquery小部件工厂为创建可重用的UI小部件提供了一个很好的起点。有关小部件工厂的更多信息,请参阅http://blog.nemikor.com/2010/05/15/building-stateful-jquery-plugins/。