.() prop vs .()bir sorudur
jQuery 1.6 36 ** yeni işlevi vardır.
$(selector).click(function(){
//instead of:
this.getAttribute('style');
//do i use:
$(this).prop('style');
//or:
$(this).attr('style');
})
ya da bu durumda aynı şeyi yapıyorlar mı?
Ve eğer benyapınprop()
, attr()
eski ararsa 1.6 geçiş eğer kıracak kullanarak geçiş var mı?
GÜNCELLEME
Bu keman görmek: http://jsfiddle.net/maniator/JpUF2/
Konsol bir dize olarak getAttribute
, ve bir dize olarak attr
günlükleri, ama ** 9 prop
Neden? Ve nasıl gelecekte benim kodlama etkiler?
CEVAP
Kasım 2012 Update 1
Benim orijinal cevap özellikle jQuery 1.6 için geçerlidir. Benim tavsiyem aynı kalır ama jQuery 1.6.1 biraz işler değişti: kırık web sitelerinin tahmin kazık karşısında, DV takım 38**. John de blogged about it Resig. Vardı ama yine de bu öneri ile aynı fikirde zorluk attr()
tercih görebiliyorum.
Orijinal cevap
Eğer sadece doğrudan jQuery ve DOM kullandıysanız, bu kesinlikle bir gelişme kavramsal olmasına rağmen kafa karıştırıcı bir değişiklik olabilir. Ama sitelerinde bu değişiklik sonucunda kıracak jQuery kullanarak bazillions için pek de iyi değil.
Ana konuları özetleyeyim:
- Genellikle
prop()
yerineattr()
. attr()
eskiden ne vakaların çoğunda,prop()
yapar. Kodunuzdaprop()
attr()
çağrı değiştirme genellikle çalışır.- Özellikler genel özellikleri, daha başa çıkmak için daha kolay. Bir öznitelik değeri sadece bir özelliği herhangi bir tür olabilir, oysa bir dize olabilir. Örneğin,
checked
özelliği Boolean,style
özelliği her stil için bireysel özelliklere sahip bir nesne,size
özelliği bir numarası vardır. - Her iki özellik ve bir öznitelik ile aynı adı var, genelde güncelleme bir güncelleme başka, ama bu durum için bazı nitelikler girdileri gibi
value
checked
: bu nitelikleri, bu özelliği her zaman temsil ettiği mevcut durumu ise özniteliği (hariç eski sürümleri IE) karşılık gelen varsayılan değer/checkedness giriş (yansıyan budefaultValue
/defaultChecked
özelliği). - Bu değişiklik, sihirli bir WordPress kullanmak nitelik ve özellikleri önünde sıkışmış tabaka bazı dil eklentisi geliştiriciler özellikleri ve sıfatları arasındaki fark hakkında biraz bilgi edinmek için olacak, yani kaldırır. Bu iyi bir şeydir.
Eğer bir jQuery geliştirici ve karışık tarafından bu iş hakkında özelliklerini ve niteliklerini, kendine bir adım geri ve Öğren biraz, beri bir WordPress kullanmak artık çalışıyor çok zor Kalkan bu şeyler. Konuyla ilgili yetkili ama biraz kuru kelimesi için görüşler var: DOM4, , *, *HTML DOM*42 43*. Mozilla DOM belgeleri en modern tarayıcılar için geçerlidir ve gözlük daha okumak kolaydır, DOM reference onların yararlı olabilir. section on element properties bir şey var.
Öznitelikleri ile başa çıkmak için basit bir örnek olarak, başlangıçta işaretli olan checkbox düşünün. Burada bunu yapmak için, geçerli HTML, iki olası adet:
<input id="cb" type="checkbox" checked>
<input id="cb" type="checkbox" checked="checked">
Nasıl eğer jQuery ile checkbox işaretli olup olmadığını öğrenmek? Yığın Taşması ve genellikle aşağıdaki önerileri bulabilirsiniz:
if ( $("#cb").attr("checked") === true ) {...}
if ( $("#cb").attr("checked") == "checked" ) {...}
if ( $("#cb").is(":checked") ) {...}
Bu aslında dünyadaki en basit şey var ve sorunsuz çalıştı 1995'ten bu yana her büyük komut dosyası tarayıcıda olan checked
Boolean özelliği ile ilgilidir:
if (document.getElementById("cb").checked) {...}
Tesiste ayrıca onay kutusunu kontrol işareti önemsiz hale getirir:
document.getElementById("cb").checked = false
JQuery 1.6, bu belirgin hale gelir
$("#cb").prop("checked", false)
Bir onay kutusu komut dosyası için checked
öznitelik kullanma fikri işe yaramaz ve gereksiz. Özelliği ne ihtiyaç vardır.
- Veya onay işaretini doğru şekilde
checked
özniteliğini kullanarak ne olduğu belli değil - Öznitelik değeri mevcut görünür devlet yerine varsayılan (YANİ bazı eski sürümleri, her şey hala zorlaştırıyor böylece hariç) yansıtır. Öznitelik sayfada onay kutusunun işaretli olup olmadığı hakkında bir şey söylemez. http://jsfiddle.net/VktA6/49/ bkz.
jQuery vs prop sorudur?...
'jQuery arasındaki fark ne .() va...
jQuery Veri vs bir Sorudur?...
appcompat v7:21.0.0': verilen adı...
.('kontrol',false) prop ya ....