【问题标题】:Is jquery $(this). the same as $? [duplicate]是 jquery $(this).和美元一样吗? [复制]
【发布时间】:2014-04-24 10:37:12
【问题描述】:

我想知道关于 jQuery 的 $ 的一些事情。我知道它指的是 jQuery 对象,但我今天发现了一些不同的东西:$parent 在我正在处理的代码中,这是 $(this).parent 的替代品: 例如:var $parent = $(this).parent();

所以我的问题是,为什么是 $parent 而不是 parent ?那是唯一的选择器吗?如何以这种方式使用它?而且我不是在谈论像$.ajax$.post 这样的虚线函数。

感谢您的帮助

【问题讨论】:

标签: jquery


【解决方案1】:

这是一个非常典型的约定,开发人员将在变量名称前加上$ 以表明它是一个jQuery 对象,并且可以访问所有典型的jQuery 方法。它不是选择器。


在您的示例中,您有:var $parent = $(this).parent();。这是对 DOM 对象的引用,保存后可以多次使用:

你可以这样做:

$(this).parent().css('color', 'green');
$(this).parent().css('border', '1px solid pink');
$(this).parent().css('background', 'purple');

在本例中,jQuery 将选择 $(this) 对象,然后选择其父对象

您也可以这样做:

var $parent = $(this).parent();
$parent.css('color', 'green');
$parent.css('border', '1px solid pink');
$parent.css('background', 'purple');

你已经保存了对父级的引用,并且让 jQuery 只查找一次。
*小旁注:css方法可以做得更好,我这样做是为了演示目的*

【讨论】:

  • 我已经添加了为什么你应该保存参考的部分
  • 确实如此,以后使用时不必从 DOM 中读取,因此性能更好。
【解决方案2】:

$parent 是一个变量名。它与 jQuery 库无关。

许多开发人员使用 $ 前缀作为变量来将它们标识为 jQuery 集合。

例如,虚线函数(即$.post$.each)只是表明它们是jQuery 库的一部分(我赶紧补充一下,这不是jQuery 的编写方式!):

var $ = {
    post: function() {  },
    each: function() {  }
}

在上面的例子中,我们现在可以分别访问$.post()$.each()这两个函数。

当您使用$(this) 时,您将获取当前的 HTML 对象,并生成一个 jQuery 对象,以便您可以使用 jQuery 带来的附加功能。例如:

this.style.color = '#000';

等同于做类似的事情:

$(this).css('color', '#000');

【讨论】:

  • 可能很高兴知道this.style.color 是更快的方法。这是因为您直接设置属性,其中 jQuery 方法使用函数.css(),它执行一些检查(因此需要时间)。 .css() 方法有一个优势,它们修复了一些跨浏览器问题,比如不透明度
【解决方案3】:

$ 在变量之前只是一个约定。很多人用它来描述一个变量,它是一个 jQuery 对象。它实际上并没有任何特别的事情。如果你愿意,你可以在你所有的 javascript 变量前面加上它(不知道你为什么会这样做,但它是有效的)。

这类似于许多开发人员用来表示变量/方法应该是私有的 (_privateVar) 的约定。

【讨论】:

  • 好的,谢谢,只是奇怪我只将它用于这个,而不是其他的。谢谢大家,它回答了我的问题:)
【解决方案4】:

$parent只是一个变量名,你也可以使用parent

$(this) 只是 this 的本地副本,用 jQuery 封装,以便使用 jQuery 方法。

【讨论】:

    猜你喜欢
    • 2013-04-26
    • 1970-01-01
    • 2012-10-22
    • 2011-08-09
    • 2011-11-28
    • 2020-04-10
    • 2013-02-05
    • 1970-01-01
    • 2013-02-06
    相关资源
    最近更新 更多