2013-05-03 25 views
8

Bu, baktığım bir şey olmalı, ama lütfen aşağıdaki sayfaya ve JavaScript'e bakın ve bana, neden kutsal olan her şey için, jQuery'nin geri dönmeyeceğini söyleyin?jQuery nesneleri aynı elemanın eşit değil mi?

HTML: http://alcatel.scottbuckingham.com/reporting/test.html

<p class="test">hello1</p> 

JS: http://alcatel.scottbuckingham.com/reporting/_scripts/collapse.js

;(function($, window, document, undefined) { 

     var t = $('.test'); 
     var s = $('.test'); 

     console.log(t); 
     console.log(s); 

     if (t === s) { 
      console.log('yes'); 
     } 

})(jQuery, window, document); 

Tam anlamıyla bunu yürütmeye çalışıyoruz saatlerce ve bu onu azalttık, neredeyse 1 === 1 deyim çalışmaz hangi.

Herhangi bir yardım çok takdir edilmektedir!

+0

Şuan gerçekten kafam karıştı. Javascript bile o zaman çalışması gerekir. Ya da lütfen herkesin neler olduğunu anlayabildiğim yerlere yönlendirmesine izin verin. –

+1

Çalışıyor ama HTML düğümlerini değil, jquery nesnelerini karşılaştırıyor. Html'yi karşılaştırmak istediğinde iki farklı jquery nesnesi. –

+0

Uhm, JavaScript'i öğrenmem gerektiğini belirttiğiniz için teşekkürler, ancak ikisi arasındaki farkın farkındayım. _either_ durumunda, jQuery nesnelerini karşılaştırarak veya değilken, bu doğru olmalıdır. –

cevap

8

bu deneyin - Çalışma Demo ->http://jsfiddle.net/mohammadAdil/tHjgN/

if(t.is(s)) { 
    console.log('yes'); 
} 

http://api.jquery.com/is/

Ya ===

if (t.get(0) === s.get(0)) { //<--Compare DOM elements instead of jquery object's 
    console.log('again yes'); 
} 

Demo ile ->http://jsfiddle.net/mohammadAdil/tHjgN/1/

+0

Teşekkürler, bir sebepten dolayı jQuery'nin aynı nesneleri karşılaştırmanıza izin vermeyeceğini asla fark etmedim. Belki daha önce hiç kullanmadım ve bu beni buraya attı. Yardım için teşekkürler! –

+0

lol, Adil, Eru – Geomorillo

1

Sen, bir bu yapabileceğini HTML düğümlerinin karşılaştırılması. Hangi HTML nesneleri karşılaştırmak istiyorsanız, bunu yapmak için doğru yoldur.

if (t[0] === s[0]) { 
    console.log('yes'); 
} 
+0

sayesinde referansı unuttu. Ama konu şu ki: jQuery öğelerini buluyor gibi gözükmüyor. Bu sayfada gerçekten başka bir şey yok ve eğer bu tam kodla bir jsFiddle oluşturursam iyi çalışıyor. –

+0

Chrome JS konsolunu kullanmak, allright ve jquery öğelerinin bağlantıyı takip ederken gereken şekilde çalışmasını sağlar. Kullanmakta olduğunuz ve IIFE kullanıyorsunuz ve bulunduğunda çalışırsa ya DOM'ınızın altına ya da "$ (document)" ifadesini kullanın. .ready() '. –

2

jQuery is yöntemi kullanabilirsiniz.

Açıklama: seçici, eleman veya jQuery nesnesi karşı elemanlarının akım eşleşti setini kontrol edin ve şu öğelerden en az biri verilen argümanlar eşleşirse gerçek dönün.

if (t.is(s)) { 
    console.log('yes'); 
} 

Örnek keman: http://jsfiddle.net/IrvinDominin/q86Sh/

1

Sen <head> daki senaryo vardı ama elemanını <body> içinde <p class="test">hello1</p>.

İlk olarak içeriğin yüklendiğinden emin olmak için $(document).ready() kullanmalısınız. Sonra .is() kullanarak eşit olup olmadığını kontrol edin.

$(document).ready(function() { 

     var t = $('.test'); 
     var s = $('.test'); 

     console.log(t); 
     console.log(s); 

     if (t.is(s)) { 
      console.log('yes'); 
     } 
}); 

örnekler with ve without.ready() işlev karşılaştırın.

+0

Hayır değil ;-) Bu çok geçerli bir jQuery eklenti kalıbı. Bakınız: http://jqueryboilerplate.com/ –

+0

@ReinierKaper Evet, öyle. Güncellenmiş örneklerimi kontrol et. – Antony

+0

@ReinierKaper Verdiğiniz referansın, jQuery eklentileri (jQuery'nin kendisi için uzantılar) geliştirmek için olduğunu, jQuery'yi kendi HTML sayfanızda kullanmaman gerektiğini unutmayın. – Cheekysoft

1

Bu size yardımcı olabilecek: Yani

var test = document.getElementById('test') //returns a HTML DOM Object 
var test = $('#test') //returns a jQuery Object 
var test = $('#test')[0] //returns a HTML DOM Object 

(limelights söylediğim gibi) kullanan bu:

if (t[0] === s[0]) { 
    console.log('yes'); 
} 

Ayrıca Kodunuzdaki etrafında

$(document).ready(function(){ 


}); 

kullanmak iyi bir uygulamadır .

İlgili konular