jquery如何定义匿名函数内的get参数的click函数?

时间:2011-04-25 23:01:37

标签: javascript jquery

我不太了解javascript语法,我的问题是:

jquery如何在匿名函数中定义get参数的click函数?

案例:

$("a").click(function(event) { 
    alert(event.type); 
});

在C中应该定义函数:

void click(fn,event){
}

在javascript中它看起来她定义为 - (但在哪里定义了事件?):

click (fn){

}

请向我解释点击功能代码源here的jquery语法。

谢谢, 约瑟夫

3 个答案:

答案 0 :(得分:2)

如果您只是想知道event对象传递给处理程序的位置,那就是jQuery-1.5.2 redistributable source code(或line 438 of the actual, un-contatenated source file)的第2568行:

var ret = handleObj.handler.apply( this, args );

在上面的代码行中,handler是您的匿名函数,args是一个数组,其第一个元素是事件对象。 jQuery使用the apply method of the JavaScript Function object来调用处理程序并传入参数

当涉及添加和处理事件的完整序列时,jQuery源代码非常复杂,因此,除非您想要对数百行代码进行逐行解释,否则我建议您将问题重新解释为较小的范围(例如,您可以创建您想要了解的场景的玩具演示)。

答案 1 :(得分:1)

也许这会有所帮助?

dosomething(function(message) {
    alert(message);    
});

function dosomething(fn) {
    fn("Hello!");
}

答案 2 :(得分:1)

jQuery的第一部分是选择器$("a"),它选择并返回从DOM中选择的对象。在这种情况下,它将返回页面上所有锚标记对象的列表。

然后,您将.click()方法链接到该方法,jQuery将事件侦听器附加到所有锚标记。附加事件监听器时,它或多或少等同于执行

<a href='..' onclick='someFunction(event)'>some link</a>

...将事件对象传递给函数。

例如,与此相比:

<a onclick='blah(event)'>click</a>
<script type='text/javascript'>
function blah(e) {
  alert (e.type);
}
</script>

如果我点击它,我会在警报中看到“点击”。原则上,jQuery也在做同样的事情。