如何在jQuery中添加回调函数?
当我执行此代码时:如何在jQuery中添加回调函数?,jquery,Jquery,当我执行此代码时: function $(id) { if (id) { if (window === this) { return new $(id); } this.e = document.getElementById(id); return this; } else { return about; } } $.prototype = { click:
function $(id) {
if (id) {
if (window === this) {
return new $(id);
}
this.e = document.getElementById(id);
return this;
} else {
return about;
}
}
$.prototype = {
click: function () {
this.e.onclick = function () {
alert("hi..");
}
}
};
它返回警报消息
但我想添加如下回调函数:
$("skg").click2();
如何执行此操作?更改单击函数以获取方法参数,并将onclick事件设置为该方法:
$("skg").click(function(){
alert("hi SKG");
});
示例1
click : function (callback){
this.e.onclick = callback
}
但如果要解析DOM元素,可以执行以下操作:
var handler = function(arg1, arg2, arg3, ...) {
alert("Some alert");
};
$("someID").click(handler);
示例2
$.prototype = {
click: function (callback) {
this.e.onclick = callback
}
};
编辑: 哈哈。。。实际上几乎没有区别 但是,如果您想解析回调函数的一些自定义参数,可以在上一个示例中进行:
您的电话:
$.prototype = {
click: function (callback) {
this.e.onclick = function() {
callback.call(this);
}
}
};
示例1:
$.prototype = {
click: function (callback) {
this.e.onclick = function() {
callback.call(this);
}
}
};
handler
将DOM元素获取为this
所以:
this=[HTML-DOMElement]
handler
中的第一个参数(称为arg1
(也可以像第一个参数[0]
)一样抛出数组变量参数来访问)包含click的事件属性
参数[0]=[事件对象]
示例2:
$.prototype = {
click: function (callback) {
this.e.onclick = function() {
callback.call(this);
}
}
};
this=[HTML-DOMElement]
就这些。但是您可以将额外的参数解析到处理程序
:
如果您的代码如下所示:
var handler = function(arg1, arg2, arg3, ...) {
alert("Some alert");
};
$("someID").click(handler);
处理程序将获得:
参数[0]=[事件对象]
//与示例1相同
但现在请看:
参数[1]=[Object]
或者更准确地说:
arguments[1]={custom:“argument”}
和以前一样,您可以访问它,抛出arg2
,但也可以像参数[1]
一样访问数组
当我说array like时,我的意思是:
$.prototype = {
click: function (callback) {
this.e.onclick = function() {
callback.call(this);
}
}
};
它具有与阵列相同的一些能力:
长度属性:.length
(参数.length
)
0索引命名:[n]
(参数[0]
,参数[1]
,…)
但是没有一种本机数组方法像sort
,push
,pop
,splice
甚至更多,但:)(只是一个网站说明)
您可以将中的类数组对象与本机数组方法一起使用:
假设参数如下:handler(“a”、“b”、“c”、“d”)
您只需要第2个参数和更高的参数:
var args=[].splice.call(参数0,1)
现在,args
是一个本机数组,具有:[“b”、“c”、“d”]
将参数添加到单击函数中
$.prototype = {
click: function (callback) {
this.e.onclick = function(event) {
callback.call(this, event, {custom: "argument"} );
}
}
};
通过调用/应用等查看函数调用
click: function (f) {
this.e.onclick = f;
}
函数单击(对象,函数){
//参数[0]==对象
//参数[1]==func
var args=[];//空数组
//复制要“传递”的所有其他参数
for(var i=2;i
事实上,这通常解决了这个问题(在一个非常低的级别上),如果他只需要一个额外的click侦听器/处理程序,而不是这里的其他解决方案,那么您可以这样创建参数:var args=[].splice.call(参数,0,2)
两者都可以正常工作。谢谢,但是上面两种方法有什么区别呢。请你解释一下好吗。