如何在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)
两者都可以正常工作。谢谢,但是上面两种方法有什么区别呢。请你解释一下好吗。