jquery选择器是同一个对象为什么不相等

时间:2021-08-08 09:37:48
[code=html
<select>
<option>列表1</option>
<option>列表2</option>
<option>列表3</option>
<option>列表4</option>
<option>列表5</option>
</select>
[/code]
采用jquery

var $select1=$("select");
var $select2=$("select");
alert($select1==$select2);//false
alert($select1[0]==$select2[0]);//true


为什么jquery对象不相等,dom对象相等?求大神帮忙

12 个解决方案

#1


每个jquery对象都是独立的实例

#2


可否详细一点,解释一下相关源码,本人是初学者,源码也看不出个所以然来

#3


这个就要问javascript了。

function EqOrN(){

}
var $a = new EqOrN();
var $b = new EqOrN();

var $c = ($a==$b);

#4





var $select1=$("select");//返回的是数组[]
var $select2=$("select");//返回的是数组[]
alert($select1==$select2);//[]==[]数组返回false
alert($select1[0]==$select2[0]);//数组的第一个对象都是指向同一个引用对象

#5


new 生成的对象。。
它只是把html的dom对象包到jq对象里了   不是直接在dom上增加的

#6


引用 4 楼 yibey 的回复:



var $select1=$("select");//返回的是数组[]
var $select2=$("select");//返回的是数组[]
alert($select1==$select2);//[]==[]数组返回false
alert($select1[0]==$select2[0]);//数组的第一个对象都是指向同一个引用对象

javascript为什么相等的呢

var p1=document.getElementsByTagName("select");
var p2=document.getElementsByTagName("select");
alert(p1==p2);//true p1、p2是数组

#7


没调一次$都或new一个对象  你获得的dom对象只是jquery对象的一个属性

#8


说了也不懂,没事找jQuery出来干嘛?
function EqOrN(){

}
var $a = new EqOrN();
var $b = new EqOrN();
var $c = ($a==$b);


a = new EqOrN();
function gE(){
return a;
}

var $d = gE();
var $e = gE();
var $f = ($d == $e);

var $g = new gE();
var $h = new gE();
var $i = ($g==$h);

#9


引用 6 楼 qiongta 的回复:
Quote: 引用 4 楼 yibey 的回复:




var $select1=$("select");//返回的是数组[]
var $select2=$("select");//返回的是数组[]
alert($select1==$select2);//[]==[]数组返回false
alert($select1[0]==$select2[0]);//数组的第一个对象都是指向同一个引用对象

javascript为什么相等的呢

var p1=document.getElementsByTagName("select");
var p2=document.getElementsByTagName("select");
alert(p1==p2);//true p1、p2是数组

你这里取到的p1 p2虽然有length的属性,但并非数组,而是一个类数组的东西,dom中称作NodeList。你可以用数组的push,pop等方法检测一下。

至于用jquery取,取出来的是两个对象,只不过是有一样的属性和方法而已。
比如说一对一模一样的双胞胎(A和B),你能说A就是B,B就是A吗~~

#10


引用 8 楼 u011461314 的回复:
说了也不懂,没事找jQuery出来干嘛?
function EqOrN(){

}
var $a = new EqOrN();
var $b = new EqOrN();
var $c = ($a==$b);


a = new EqOrN();
function gE(){
return a;
}

var $d = gE();
var $e = gE();
var $f = ($d == $e);

var $g = new gE();
var $h = new gE();
var $i = ($g==$h);

不错,学习了,这里面有很多知识需要学习,看懂了……

#11


console.log($select1);
console.log($select2);

#12


取$('#select').val()来判断是否相等吧,jQuery对象不能用来判定大小。

#1


每个jquery对象都是独立的实例

#2


可否详细一点,解释一下相关源码,本人是初学者,源码也看不出个所以然来

#3


这个就要问javascript了。

function EqOrN(){

}
var $a = new EqOrN();
var $b = new EqOrN();

var $c = ($a==$b);

#4





var $select1=$("select");//返回的是数组[]
var $select2=$("select");//返回的是数组[]
alert($select1==$select2);//[]==[]数组返回false
alert($select1[0]==$select2[0]);//数组的第一个对象都是指向同一个引用对象

#5


new 生成的对象。。
它只是把html的dom对象包到jq对象里了   不是直接在dom上增加的

#6


引用 4 楼 yibey 的回复:



var $select1=$("select");//返回的是数组[]
var $select2=$("select");//返回的是数组[]
alert($select1==$select2);//[]==[]数组返回false
alert($select1[0]==$select2[0]);//数组的第一个对象都是指向同一个引用对象

javascript为什么相等的呢

var p1=document.getElementsByTagName("select");
var p2=document.getElementsByTagName("select");
alert(p1==p2);//true p1、p2是数组

#7


没调一次$都或new一个对象  你获得的dom对象只是jquery对象的一个属性

#8


说了也不懂,没事找jQuery出来干嘛?
function EqOrN(){

}
var $a = new EqOrN();
var $b = new EqOrN();
var $c = ($a==$b);


a = new EqOrN();
function gE(){
return a;
}

var $d = gE();
var $e = gE();
var $f = ($d == $e);

var $g = new gE();
var $h = new gE();
var $i = ($g==$h);

#9


引用 6 楼 qiongta 的回复:
Quote: 引用 4 楼 yibey 的回复:




var $select1=$("select");//返回的是数组[]
var $select2=$("select");//返回的是数组[]
alert($select1==$select2);//[]==[]数组返回false
alert($select1[0]==$select2[0]);//数组的第一个对象都是指向同一个引用对象

javascript为什么相等的呢

var p1=document.getElementsByTagName("select");
var p2=document.getElementsByTagName("select");
alert(p1==p2);//true p1、p2是数组

你这里取到的p1 p2虽然有length的属性,但并非数组,而是一个类数组的东西,dom中称作NodeList。你可以用数组的push,pop等方法检测一下。

至于用jquery取,取出来的是两个对象,只不过是有一样的属性和方法而已。
比如说一对一模一样的双胞胎(A和B),你能说A就是B,B就是A吗~~

#10


引用 8 楼 u011461314 的回复:
说了也不懂,没事找jQuery出来干嘛?
function EqOrN(){

}
var $a = new EqOrN();
var $b = new EqOrN();
var $c = ($a==$b);


a = new EqOrN();
function gE(){
return a;
}

var $d = gE();
var $e = gE();
var $f = ($d == $e);

var $g = new gE();
var $h = new gE();
var $i = ($g==$h);

不错,学习了,这里面有很多知识需要学习,看懂了……

#11


console.log($select1);
console.log($select2);

#12


取$('#select').val()来判断是否相等吧,jQuery对象不能用来判定大小。