这段代码如何运作?

时间:2012-04-12 17:29:55

标签: javascript anonymous-function

几分钟前我正在查看一些代码,这让我很困惑。

$("nav a").mouseenter(function() {
  audio.play();
});

我知道'$'是jQuery for document.getElementById(“”);和mouseEnter是'nav a'的事件处理程序,但是如何将该函数分配给该事件?它没有任何赋值运算符'='?

我现在不太了解jQuery,因为我正试图彻底解决JavaScript问题。因此,当我将代码修改为纯JavaScript时,它似乎不起作用......

document.getElementById("playAudio").onclick(function () {
   audio.play();
});

我不明白为什么?我认为这是相同的代码?...

4 个答案:

答案 0 :(得分:1)

mouseenter是一个功能。类似于:

var element = {elm: document.getElementById('test')};
element.mouseenter = function(func) {
    element['elm'].addEventListener('mouseenter', func);
};
element.mouseenter(function() {});

答案 1 :(得分:0)

您将函数对象(使用函数表达式创建)传递给jQuery.mouseenter,jQuery从那里获取它。

仅供参考,您尝试下载的部分内容是文档对象模型(DOM)。您正在尝试使代码纯JavaScript + DOM API。学习JS和DOM的基础是很好的,但要注意jQuery可以消除浏览器DOM实现中的许多不一致,例如注册事件监听器。

答案 2 :(得分:0)

传递函数,函数是匿名的(没有名字)。

你也可以这样做:

function foo() { audio.play(); }

$('nav a').mouseenter(foo);

答案 3 :(得分:0)

美元符号不仅限于getElementById(),它是jQuery对象,在您的情况下,调用nav元素然后抓取{{1}内的a标记}}。在获取元素之后,它会匿名附加事件,允许函数在事件被触发时运行。