这两个var $ test.parent()和var test.parent之间是否有任何用法差异?

时间:2017-03-16 05:30:42

标签: javascript jquery

我有两个变量和波纹管代码来访问元素。我可以访问变量父元素及其子元素。我看不出有任何区别。它们是相同的还是有任何区别?

HTML

$(function(){
        var test = $('#test');
        var $test = $('#test');
        console.log($test.parent().text());
        console.log(test.parent().text());
});

的JavaScript

rails g devise:views

2 个答案:

答案 0 :(得分:2)

我可以看到这个问题的3个可能的方面,所以我将回答所有这三个方面:

$符号

在JavaScript中,$只是另一个可以用作变量名称一部分的字符,并且是名称的一部分。这与PHP不同,其中$符号用作前缀,并且不是名称的一部分。

就像任何其他有效字符(除了数字)一样,$可以单独用作有效名称,jQuery使用它来命名它们的主要功能(AKA jQuery)。

您可以选择将变量命名为您喜欢的名称,但许多开发人员喜欢使用$符号作为提醒,它代表一个jQuery对象,这是一个非平凡的对象。

换句话说,只要你记得你做过的事情,你是否决定以$开头是没有区别的。

2个变量是否相同?

如上所述,两个变量名称​​不相同。一个有4个字符,一个有5个字符。它们根本没有任何关系。

这两个对象是否相同?

每次运行jQuery函数时,都会得到 new 对象。此对象包含对参数中引用的DOM对象的引用。

即使两个jQuery对象引用相同的DOM对象,对象本身也不一样。

这是许多新jQuery开发人员陷入的陷阱:

$current=$('div#something');
//  some stuff
if($current==$('div#something')) …; // always false

你有。三个答案。请选择:)

答案 1 :(得分:0)



$(function(){
        var test = $('#test');
        var $test = $('#test');
        console.log($test.parent().text());
        console.log(test.parent().text());
        console.log(test[0] === $test[0]);
        console.log(test === $test);
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>Sample text : 
    <input id='test' type='text' value='test' />
</div>
&#13;
&#13;
&#13;

没有区别 - test是一个变量的名称,$test是另一个变量的名称 - 但它们都设置为相同的东西,否则以相同的方式处理。 $仅在用作jQuery函数形式$(/*some stuff*/)时才有意义 - 否则,它只是变量名称的有效字符。

但请注意,它们引用的是同一个元素the objects themselves are different objects, so not strictly equal。因此,为什么上面的第一个比较评估为&#34; true&#34;但第二个评估为&#34; false&#34;。您还可以使用jQuery .is()方法评估它们的相等性。