函数处理函数是如何在JQuery中工作的

how function handler function handler work in JQuery

本文关键字:JQuery 工作 处理函数 函数      更新时间:2023-09-26

我想了解这段代码是如何工作的

$("#imageGallery a").click(function(event){
  event.preventDefault();
});

为什么函数处理程序(在这种情况下"事件")被执行?处理程序不应该是一些不执行的变量吗?请随意分享任何与此相关的关键词/文章

谢谢. .

您正在使用的.click()方法接受一个参数,该参数是一个回调函数。

$("#imageGallery a").click(myCallback);
function myCallback(e) {
    // the argument e which you can name anything you want is a
    // jQuery event object
}

回调函数将被传递一个参数,该参数是一个jQuery事件对象。为了便于说明,我在上面的代码中使用了一个单独定义的回调函数。但是,该函数也可以内联定义为内联匿名函数,如下所示:

$("#imageGallery a").click(function(e) {
    // the argument e is a jQuery event object
});

jQuery事件对象同时具有属性和方法。.preventDefault()是该对象的方法之一。您可以在jQuery文档中看到对象的其他属性列表。

event不是事件处理程序,它是一个事件对象具有属性和方法,包括在您的示例中调用的preventDefault()方法。

你的事件处理程序是一个匿名函数function(event){ event.preventDefault(); }

在本例中,event(传递给函数的第一个参数)包含发生的事件的对象(在本例中是单击事件)。该事件对象创建诸如preventDefault()之类的函数,这些函数告诉浏览器忽略来自该事件的任何未来操作,例如打开已单击的链接。

试着在它前面加一行:

$("#imageGallery a").click(function(event){
  console.log(event);
  event.preventDefault();
});

然后查看您的控制台(按下F12),并查看控制台选项卡,并查看它输出的内容。您可以看到event对象包含的所有字段和其他所有内容。

为了更明确一点,event不是一个处理程序,你的整个函数是:

function(event){
  event.preventDefault();
}
当事件被触发时,jQuery将把浏览器事件对象传递给这个函数,然后你的代码将执行。