function()在jQuery中是什么意思?这个和$(这个)有什么区别

What does function() mean in jQuery? What is the difference between this and $(this)

本文关键字:这个 什么 区别 jQuery 是什么 function 意思      更新时间:2023-09-26

问题1

我刚开始学习jQuery,有一件事让我困惑,那就是function(),里面有一个参数,即:function(e)

[示例1]

 $("#rating a").click(function(e){
     // stop normal link click
     e.preventDefault();
 }

function(e)中的e是什么?

[示例2]

$.post("test.php", function(data) {
    alert("Data Loaded: " + data);
});

你怎么知道data是什么?我假设data不同于示例1中的e

我很困惑为什么function()在不同的场景中不同


问题2既然我们讨论的是基本的jQuery,这里还有另一个jQuery问题。this$(this)之间有什么区别?

[示例3]

$(document).ready(function() {
 // use this to reset several forms at once
$("#reset").click(function() {
    $("form").each(function() {
        this.reset();
    });
});

[示例4]

   $("a").hover(function(){
       $(this).parents("p").addClass("highlight");
   },function(){
       $(this).parents("p").removeClass("highlight");
   });

});

函数(e)->这是作为参数传入事件对象。如果没有e,您就无法访问事件对象。

"this"是你所做的任何事情的上下文中的对象。如果你像$(this)一样包装"this",那么你就可以访问jQuery提供给你的所有扩展。更清楚地说,"this"通常是一个DOM对象,$(this)是一个jQuery对象。

您可以在JavaScript中以两种方式之一声明函数。

这样:

function MyFunction() {
     //Functiony stuff
}

这样:

var MyFunction = function() {
};

使用第二种方法,可以将该函数作为参数传递给其他函数。然后,那些接收它的函数可以为它提供参数。如果没有在函数中定义这些参数,则无法访问它们。这里有更多:

var MyFunction1 = function(message) {
      alert(message);
};
var MyFunction2 = function(alertFunction) {
      if(alertFunction != null)
           alertFunction("Here's another method!");
};
//You  can then call MyFunction and pass it arguments, even if that argument is a function.
MyFunction2(MyFunction1);

如果你没有在MyFunction1中定义消息变量,你就永远不会得到通过MyFunction2传递给它的消息。希望我没有让它变得比需要的更复杂…基本上,你可以传递函数,如果你不提供方法传递给它的变量,你就不能使用它们。当你说这样的话时,这就是你在做的:

$("MySelector").click(function(e) {
    //Stuff here
});

您正在向单击函数发送一个匿名函数。如果你不提供它将传递给你的变量,你就不能使用它们。

很久以前,当我意识到你可以做到这一点时,它极大地改变了我编写JavaScript的方式。我相信它可能也会为你做同样的事。

在您的第一个示例中:

 $("#rating a").click(function(e){
     // stop normal link click
     e.preventDefault();
 }

e是事件对象。它的preventDefault方法会阻止所用事件的默认值。在这种情况下,单击将不会产生任何效果。它的用法类似return false;但是一些浏览器可能具有不同的动作。这对所有人都有效。

关于这个与$(这个)

在函数内部,如果this引用了触发事件的DOM元素,那么$(this)仍然是触发事件的DOM元素,只有它通过在jQuery元素周围包装一个$()来包装它

请在SO jQuery上查看此问题:What';s$(这个)';和';这个';?

函数(x){…}

是一个匿名函数(即,您没有给它一个显式的名称),它作为参数传递给这些函数(在您的示例中,作为参数传递到click()和post())。这通常用于回调。click()函数做了一些事情,然后在接下来的一行中,您的匿名函数被调用作为对某些事情的响应(在本例中是一个click事件)。

x表示这个匿名函数接受一个参数,它在函数范围内的名称将是x。你可以随心所欲地命名它(在一个例子中是e,在另一个例子是data,但在任何情况下都不必使用这些名称)。通常,您可以让它接受任意多的参数,如函数(x,y,z){return(x+y+z);},但在您给出的示例中,jQuery正在寻找某个原型。