0
我爲手風琴創建了一個基本的插件。我的代碼位於我的accordion.js文件中,在包含jQuery庫之後,我已經包含它。在accordion.js文件中使用此代碼的手風琴沒有問題。我的jQuery插件問題
(function($) {
$.fn.accordion = function(options) {
var settings = $.extend({
speed:300,
}, options);
return this.each(function() {
var $elm = $(this),
s = settings.speed;
$elm.on('click',function(e) {
$('.accordion-toggle').on('click', function(e){
$elm.each(function() {
if(!$(e.target).is(this)) {
$($elm.attr('data-target')).slideUp(s);
$(this).removeClass('active');
}
});
});
$($elm.attr('data-target')).slideToggle(s);
$elm.toggleClass('active');
e.stopPropagation();
});
});
}}(jQuery)); $(".accordion-toggle").accordion();
但是,當我從我的頁面啓動速度選項,它會發生兩次。
$(".accordion-toggle").accordion({ speed: 500, });
問題在哪裏?
是的,我知道這會工作。但它的插件 - 我已經看到,通常插件是從文件本身啓動的。 – Smit
您正在使用類選擇器啓動您的插件。通常我們使用數據屬性從插件本身啓動一個插件。我建議你看看更多的在jQuery中創建插件。使用插件文件本身的類選擇器啓動插件是不正常的。 – Yalamber
好的,所以我會在開發插件時看到更多的例子。除了https://learn.jquery.com/plugins/advanced-plugin-concepts/以外,你能否建議其他資源來徹底學習基礎知識 - 有很好的解釋嗎?還有 - 在這種情況下可以做些什麼? – Smit