我有两个变量和波纹管代码来访问元素。我可以访问变量父元素及其子元素。我看不出有任何区别。它们是相同的还是有任何区别?
HTML
$(function(){
var test = $('#test');
var $test = $('#test');
console.log($test.parent().text());
console.log(test.parent().text());
});
的JavaScript
rails g devise:views
答案 0 :(得分:2)
我可以看到这个问题的3个可能的方面,所以我将回答所有这三个方面:
$
符号在JavaScript中,$
只是另一个可以用作变量名称一部分的字符,并且是名称的一部分。这与PHP不同,其中$
符号用作前缀,并且不是名称的一部分。
就像任何其他有效字符(除了数字)一样,$
可以单独用作有效名称,jQuery使用它来命名它们的主要功能(AKA jQuery
)。
您可以选择将变量命名为您喜欢的名称,但许多开发人员喜欢使用$
符号作为提醒,它代表一个jQuery对象,这是一个非平凡的对象。
换句话说,只要你记得你做过的事情,你是否决定以$
开头是没有区别的。
如上所述,两个变量名称不相同。一个有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;
没有区别 - test
是一个变量的名称,$test
是另一个变量的名称 - 但它们都设置为相同的东西,否则以相同的方式处理。 $
仅在用作jQuery函数形式$(/*some stuff*/)
时才有意义 - 否则,它只是变量名称的有效字符。
但请注意,它们引用的是同一个元素the objects themselves are different objects, so not strictly equal。因此,为什么上面的第一个比较评估为&#34; true&#34;但第二个评估为&#34; false&#34;。您还可以使用jQuery .is()
方法评估它们的相等性。