var a=$('#start > div:last-child');
var b=$('#start > div.live')[0];
alert(a==b)
alert(a==$(b))
比較它總是假的。你如何比較jQuery中的兩個元素?如何將兩個元素的jQuery
感謝
var a=$('#start > div:last-child');
var b=$('#start > div.live')[0];
alert(a==b)
alert(a==$(b))
比較它總是假的。你如何比較jQuery中的兩個元素?如何將兩個元素的jQuery
感謝
您可以比較DOM元素。請記住,jQuery選擇器返回的數組在參考平等意義上永遠不會相等。
假設:
<div id="a" class="a"></div>
這樣的:
$('div.a')[0] == $('div#a')[0]
返回true。測試
收集結果,你得到一個jQuery回不支持組爲基礎的比較。您可以使用各個成員比較一個接一個,雖然,有沒有實用程序這一點,我知道在jQuery的。
隨機AirCoded例如jQuery的「設置平等」:
$.fn.isEqual = function($otherSet) {
if (this === $otherSet) return true;
if (this.length != $otherSet.length) return false;
var ret = true;
this.each(function(idx) {
if (this !== $otherSet[idx]) {
ret = false; return false;
}
});
return ret;
};
var a=$('#start > div:last-child');
var b=$('#start > div.live')[0];
console.log($(b).isEqual(a));
每次調用的jQuery()函數時,創建一個新的對象,並返回。所以即使對相同選擇器進行平等檢查也會失敗。
<div id="a">test</div>
$('#a') == $('#a') // false
所得jQuery對象包含匹配的元件,其基本上類似HTMLDivElement
始終指代相同的對象源DOM對象的數組,所以應該使用陣列索引作爲達林建議檢查那些的相等性。
$('#a')[0] == $('#a')[0] // true
a.is(b)
,並檢查它們是否不等於使用
!a.is(b)
爲
$b = $('#a')
....
$('#a')[0] == $b[0] // not always true
也許類添加到元素或刪除它的第一個任務
a.not(b)不是a.is(b)的逆,而是它從a中移除元素b。反而使用!a.is(b) – 2016-07-18 10:32:38
是的,你是對的! – Jondi 2017-02-07 12:43:54
有後你測試過了嗎?我敢肯定的,因爲在'.selector'屬性的差異也不會返回true。 – 2010-03-09 13:35:58
是的,我已經測試了IE6,FF 3.6和Chrome 4的代碼,它返回'所有這些瀏覽器TRUE'。 – 2010-03-09 17:15:11
參見下面通過5 R-U-BN的註釋。下面的技巧:a.is(b) – JCallico 2012-03-08 19:43:27