jquery/javascript: function(e){.... e 是什么?为什么需要它?它实际上做了什么/完成了什么?

IT技术 javascript jquery events
2021-03-10 16:00:37
$('#myTable').click(function(e) {
    var clicked = $(e.target);
    clicked.css('background', 'red');
});

有人可以向我解释这一点,并解释为什么需要 e 以及它实际做什么..

4个回答

Usinge只是event. 你可以传递任何你想要的变量名。

// would work just the same
$('#myTable').click(function(anyothername) {
    var clicked = $(anyothername.target);
});

您可以查看有关jQuery 处理事件的更多信息

还值得注意的是,这不仅仅针对 jQuery,也针对 javascript 中的本机事件。
2021-05-02 16:00:37
我有同样的问题
2021-05-02 16:00:37
@android.nick 即使您可能没有明确使用它,但 jQuery 需要它。想象一下click场景。jQuery 需要知道执行的操作以及执行操作的项目。因此,即使您不使用该变量,它也会在内部使用。但是你也可以打电话$('#myTable').click(function() { ... });
2021-05-05 16:00:37
我试图理解同样的问题,所以它有点像“this”,因为它指的是自身,如果没有 e 函数回调目标将无法附加到#mytable?
2021-05-07 16:00:37
啊,我不知道它只是一个变量......所以,如果我不在脚本中的其他任何地方使用它,但那两个地方,该变量的目的是什么?我不明白它拥有什么...是什么告诉它要持有的信息?
2021-05-21 16:00:37

拥有e(引发事件的对象)的一个好处是可以防止某些元素的默认行为传播。例如:

<a id="navLink" href="http://mysite/someOtherPage.htm">Click For Info</a>

呈现用户可以点击的链接。如果用户禁用了 JavaScript(为什么?我不知道),您希望用户在单击链接时导航到 someOtherPage.htm。但是如果他们启用了 JavaScript,那么您希望显示一个模态对话框而不是离开页面。您可以通过阻止锚点/链接的默认行为并按如下方式显示模式来处理此问题:

$("#navLink").click(function(e) {
  e.preventDefault();  //this prevents the user from navigating to the someOtherPage.htm
  $("#hiddenDiv").dialog({
    //options
  });  //show the dialog
});

因此,使该参数可用,除其他答案中描述的其他事项外,您还可以防止所选元素的默认行为。

希望这可以帮助!

我试图理解同样的问题,所以它有点像“this”,因为它指的是自身,如果没有 e 函数回调目标将无法附加到#mytable?
2021-04-29 16:00:37

我在理论上说我不是专家,但我通过使用他的小 (e) 达到了预期的结果,它不必是一个 e lol

我想到了。这是一种将同一事件从一个函数传递到另一个函数的方法。

简单来说。我想让页面导航成为一个弹性滚动功能,但是,我希望页面通过悬停“和”导航,我希望在某些条件下可以点击相同的导航。我还想要来自其他非链接的点击事件的相同动态导航。为了保持当前目标并仍然使用导航功能,我必须设置小 (e),因为 jQuery 将失去 $(this) 的作用域作为函数 lol 的相同目标。这是一个快速示例。

function navigate_to_page(e){
var target = $(e.currentTarget).attr('href'); //--This is the same as $(this) but more static to bring out of it's scope
    $('html, body').animate({
    'scrollTop':$(target).offset().top-0,
    'scrollLeft': $(target).offset().left-$(window).width()*0.0}, 2000, 'easeOutBounce');
}

不要让胡言乱语迷惑你。这只是一个简单的页面滚动动画。需要注意的是e.currentTargete是我们的变量,currentTarget是一个等效于 $(this) 的 jQuery,所以它们一起是一个 Globular $(this) 函数。现在我用另一个函数调用它,条件是这样的

$('#myNavigationDiv a').on('mouseenter', function(e){
    if($(myCondition) === true){
        return false;
        }else{
        navigate_to_page(e);
        }
    });

看到小 (e) 如何将所有东西联系在一起?

现在您可以将 (e) 替换为 (whateveryouwan)。通过在两个函数中调用 e 匹配e .currentTarget ,您可以将其应用于您需要的任何详细的特定功能,并节省自己的代码页,哈哈

@Snorlax - 谁说我长大了?我只是不会在一个严肃的网站上幼稚地写作,这个网站需要写得很好的英文答案才能让我们的国际朋友理解。LOL 是俚语,并不是每个人都懂俚语。这也意味着没有什么比它的意义更多的国家了,如果你问我,在不好笑的地方使用它是毫无意义的。如果我认为问题写得不好,我可以投反对票 - 检查规则。
2021-04-26 16:00:37
@Snorlax - 如果你不是在争论我的反对权,那我们为什么要对此进行辩论?!想象一下,如果这个网站上的每个人都用俚语,他们当地的俚语,并缩写一切——这个网站将无法阅读和翻译。“大多数国际人都理解”-这是不正确的,我希望看到您对该声明的研究/证明。
2021-04-30 16:00:37
投票赞成,因为这个答案对我有帮助。虽然它可能还没有准备好纳入技术手册,但它清晰明了,并附有相关示例。我来这里是为了成为更好的开发人员,而不是抱怨口语化的文学怪癖。虽然我可以欣赏一种对潜在读者的语言多样性敏感的写作风格,但我不愿意代表国际社会提出批评,承认我不可能知道他们是否理解“lol ”。哈哈!谢谢你,BrianIAK,这个答案!
2021-04-30 16:00:37
@TheCarver 你投反对票是因为他使用了 LOL 即使答案有很好的输入?是的,你长大了是因为大人指出“幼稚”的东西而忽略了要点。
2021-05-02 16:00:37
我不是在争论你反对的权利,我只是认为反对评论更幼稚,因为你不同意其中 1% 的内容,而且你认为这比帖子的大部分内容更重要。大多数国际人都理解“lol”是什么,所以这甚至不是问题。
2021-05-16 16:00:37

它是函数的形式参数。jQuery 将在调用函数时传入一个事件对象。这用于确定目标。文档中所述,即使浏览器(例如 IE)不传递事件对象,jQuery 也将始终传递事件对象。

在这种情况下,目标会告诉您最初单击的是哪个元素。