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