如何编写jquery 插件 函数A调用函数B
现在有一个问题,打开网页点击id_1开始轮播图片,用到函数A,函数A调用函数B,在js里该怎么写呢?我是这么写的但是报错(function($){$.fn.A=funct...
现在有一个问题,打开网页点击 id_1 开始轮播图片,用到函数A,
函数A调用函数B,在js里该怎么写呢?
我是这么写的 但是报错
(function($){
$.fn.A=function(){
..........;
var B=function(){
............
}
}
})(jQuery);
$(function(){
$("#id_1").A();
})
我是新手,请高人指教!
以下是具体代码
;(function($){
$.fn.autoTime=function(){
var t = n = 0, count;
var count=$("ul li").length;
setInterval("showAuto()", 2500);
var showAuto= function(){
n = n >=(count - 1) ? 0 : ++n;
$("ul li").eq(n).trigger('click');
}
}
})(jQuery);
$(function(){
$("ul li").click(function(){
var index=$(this).index();
$(this).addClass("on").siblings().removeClass("on");
$("#box div:eq("+index+")").fadeIn(400).siblings().hide();
})
$("#id_1").autoTime();
}) 展开
函数A调用函数B,在js里该怎么写呢?
我是这么写的 但是报错
(function($){
$.fn.A=function(){
..........;
var B=function(){
............
}
}
})(jQuery);
$(function(){
$("#id_1").A();
})
我是新手,请高人指教!
以下是具体代码
;(function($){
$.fn.autoTime=function(){
var t = n = 0, count;
var count=$("ul li").length;
setInterval("showAuto()", 2500);
var showAuto= function(){
n = n >=(count - 1) ? 0 : ++n;
$("ul li").eq(n).trigger('click');
}
}
})(jQuery);
$(function(){
$("ul li").click(function(){
var index=$(this).index();
$(this).addClass("on").siblings().removeClass("on");
$("#box div:eq("+index+")").fadeIn(400).siblings().hide();
})
$("#id_1").autoTime();
}) 展开
4个回答
展开全部
编写插件的目的是给已经有的一系列方法或函数做一个封装,以便在其他地方重复使用,提高开发效率和方便后期维护。
在编写jQuery插件的时候,我们一般会遵循一些约定:
jQuery插件推荐命名为:jquery.插件名.js。
所有对象方法都应当附加到jQuery.fn对象上,而所有的全局函数都应当附加到jQuery对象本身上。
在插件内部,this指向的是当前通过选择器获取的jQuery对象;而一般的方法如click()方法,内部的this指向的是DOM元素。
所有的方法或函数插件,都应当以分号结尾,否则压缩的时候可能出现问题,甚至可以在插件头部先加上一个分号,以免他人的不规范代码给插件带来影响。
插件应该返回一个jQuery对象,以保证插件的可链式操作。除非插件需要返回的是一些需要获取的量,例如字符串或者数组等。
为了避免冲突,避免在插件内部使用作为jQuery对象的别名,而应使用完整的jQuery来表示。当然,也可以利用闭包技术来回避这个问题,使插件内部继续使用作为jQuery的别名。
闭包:当内部函数在包含它们的外部函数之外被调用的时候,就会形成闭包,即内部函数会在外部函数返回后执行。
function a(){
var i = 0;
function b(){
alert(++i);
}
return b;
}
var c = a();
c();
以上代码中,当函数a的内部函数b被函数a外的一个变量c引用的时候,就创建了一个我们通常所谓的“闭包”。
另外,还可以通过匿名函数创建闭包(一个函数是不是匿名函数和是不是闭包并没有直接关系):
var JSON = JSON || {};
(
function(){
var f = function(n){
for(var i=0;i<n;i++){
alert(i);
}
};
JSON.f=f;
})();
JSON.f(1);
内部函数:函数定义和函数表达式位于另一个函数的函数体内,并且这些内部函数可以访问它们所在的外部函数中声明的所有局部变量、参数和声明的其他内部函数。
闭包的作用:1、保护函数内的变量安全;2、在内存中维持一个变量(javascript垃圾回收机制)。
利用闭包的特性,我们可以在既避免内部临时变量影响全局空间,又可以在插件内部使用$符号作为jQuery的别名。常见的jQuery插件都是以下这种形式:
(function(){
/*编写代码*/
})();
首先定义一个匿名函数function(){/*编写代码*/},然后用括号括起来,最后通过()这个运算符来执行。可以传递参数进去,以供内部函数使用。
//为了更好的兼容性,开始前有个分号
;(function($){ //此处将$作为匿名函数的形参
/*编写代码,可以使用$作为jQuery的别名*/
})(jQuery); //将jQuery作为实参传递给匿名函数
在编写jQuery插件的时候,我们一般会遵循一些约定:
jQuery插件推荐命名为:jquery.插件名.js。
所有对象方法都应当附加到jQuery.fn对象上,而所有的全局函数都应当附加到jQuery对象本身上。
在插件内部,this指向的是当前通过选择器获取的jQuery对象;而一般的方法如click()方法,内部的this指向的是DOM元素。
所有的方法或函数插件,都应当以分号结尾,否则压缩的时候可能出现问题,甚至可以在插件头部先加上一个分号,以免他人的不规范代码给插件带来影响。
插件应该返回一个jQuery对象,以保证插件的可链式操作。除非插件需要返回的是一些需要获取的量,例如字符串或者数组等。
为了避免冲突,避免在插件内部使用作为jQuery对象的别名,而应使用完整的jQuery来表示。当然,也可以利用闭包技术来回避这个问题,使插件内部继续使用作为jQuery的别名。
闭包:当内部函数在包含它们的外部函数之外被调用的时候,就会形成闭包,即内部函数会在外部函数返回后执行。
function a(){
var i = 0;
function b(){
alert(++i);
}
return b;
}
var c = a();
c();
以上代码中,当函数a的内部函数b被函数a外的一个变量c引用的时候,就创建了一个我们通常所谓的“闭包”。
另外,还可以通过匿名函数创建闭包(一个函数是不是匿名函数和是不是闭包并没有直接关系):
var JSON = JSON || {};
(
function(){
var f = function(n){
for(var i=0;i<n;i++){
alert(i);
}
};
JSON.f=f;
})();
JSON.f(1);
内部函数:函数定义和函数表达式位于另一个函数的函数体内,并且这些内部函数可以访问它们所在的外部函数中声明的所有局部变量、参数和声明的其他内部函数。
闭包的作用:1、保护函数内的变量安全;2、在内存中维持一个变量(javascript垃圾回收机制)。
利用闭包的特性,我们可以在既避免内部临时变量影响全局空间,又可以在插件内部使用$符号作为jQuery的别名。常见的jQuery插件都是以下这种形式:
(function(){
/*编写代码*/
})();
首先定义一个匿名函数function(){/*编写代码*/},然后用括号括起来,最后通过()这个运算符来执行。可以传递参数进去,以供内部函数使用。
//为了更好的兼容性,开始前有个分号
;(function($){ //此处将$作为匿名函数的形参
/*编写代码,可以使用$作为jQuery的别名*/
})(jQuery); //将jQuery作为实参传递给匿名函数
展开全部
你这是函数A里面有一个函数B
但是你说你函数A调用了函数B。
在哪调用的。
能写个简单点得完整例子吗。
你现在写的太简单了。都看不出来错在哪里。
setInterval默认的上下文是window
所以相当于调用window.showAuto,当然找不到方法。
但是你说你函数A调用了函数B。
在哪调用的。
能写个简单点得完整例子吗。
你现在写的太简单了。都看不出来错在哪里。
setInterval默认的上下文是window
所以相当于调用window.showAuto,当然找不到方法。
更多追问追答
追问
已经贴了代码出来 劳烦大哥帮下忙
追答
你可以这么写setInterval(showAuto,2500);
回调的形式。
不要用字符串的形式"showAuto()"
这样写的话,执行上下文就变成window了。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
function A(){
B(); //这样就调用到了
}
function B(){
alert(1);
}
B(); //这样就调用到了
}
function B(){
alert(1);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我要看明白你问的是什么我是那个
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询