为什么要返回触发器('点击')?

时间:2015-04-07 13:28:09

标签: javascript jquery

我是JS的新手并试图理解基本概念。我想学习面向对象的JS,但我遇到了困难。我试图了解return语句的用法。我刚刚浏览了dropdown.js中的代码并遇到了以下行:

return $this.trigger('click')

现在我习惯了:

return true 

return false 

甚至:

return (1 + 1) > 10 ; 

我知道这些return语句的用法。我对return语句的一般概述是它用于返回你想在另一个地方使用的值。

我仍然无法理解为何使用此声明:

return $this.trigger('click'); 

此行也可以在git上的line 75上找到。

谢谢。

亚历-Z

4 个答案:

答案 0 :(得分:3)

请注意,这是Dropdown.prototype.keydown方法的一部分,因此我们检测在您引用的行中按下了哪个键

if ((!isActive && e.which != 27) || (isActive && e.which == 27)) {
  if (e.which == 27) $parent.find(toggle).trigger('focus')
  return $this.trigger('click')
}

字符代码27是转义键。因此,如果用户点击了转义键,则触发此元素的on click事件(下拉列表)并返回jQuery对象(因为jQuery链接)。

答案 1 :(得分:0)

我的猜测是。 trigger函数返回this个对象。 因此调用的全部内容与。相同。

var that = $this.trigger('click')
return that;

但是只要你需要触发一些事件,f.e。 keydown事件被触发,您触发所需的事件并在同一行返回该对象。

答案 2 :(得分:0)

返回$ this 中的在进入上下文之前没有任何意义。返回时,它返回的函数被告知在其自己的上下文中使用 this 执行某些操作

答案 3 :(得分:0)

https://api.jquery.com/trigger/处的文档说.trigger返回jQuery对象。

这样做可以在函数链中使用它。这意味着你可以做到:  $ this.trigger('单击&#39)。someOtherJqueryFunction();

如果你还没有返回jQuery对象,你就无法做到。

举个简单的例子,让我们说你有一个对象叫做具有Home,Dog的属性的人

不涉及jQuery的简单示例。 让我们说有一个设置家和狗的功能,但该功能返回人物对象:

function setHomeName(name){
    homeName = name;
    return this; // return person
}

function setDogName(name){
    dogName = name;
    return this; // return person
}

现在你可以做person.setHomeName(' home name')。setDogName(' dog name');

这相当于person.setHomeName(' home name'); person.setDogName('狗名')。

当person.setHomeName()返回对person对象本身的引用时,我们可以将函数链接在一起并将所有内容写入一行。从jQuery示例中可以看到这个链可能很长。