SORU
3 Mayıs 2011, Salı


.() 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
3 Mayıs 2011, Salı


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() yerine attr().
  • attr() eskiden ne vakaların çoğunda, prop() yapar. Kodunuzda prop() 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 bu defaultValue / 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.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • EmperorTigerstar

    EmperorTiger

    14 EYLÜL 2009
  • Sergio Fernandez

    Sergio Ferna

    1 EKİM 2009
  • Video-Tutorials.Net

    Video-Tutori

    15 Mart 2011