jQuery vs prop sorudur?
Şimdi bu sadece bir değilFark soru buydu, done some tests(http://jsfiddle.net/ZC3Lf/) çıkış ile <form action="/test/"></form>
prop
attr
değiştirme var:
1) Modifikasyon test prop
Prop:http://fiddle.jshell.net/test/1
Ot:http://fiddle.jshell.net/test/1
2) Değişiklik test Sorudur
Prop:http://fiddle.jshell.net/test/1
Ot:/test/1
3) bir Sorudur sonra Değişiklik test Prop
Prop:http://fiddle.jshell.net/test/11
Ot:http://fiddle.jshell.net/test/11
4) sonra bir Sorudur Değişiklik test Prop
Prop:http://fiddle.jshell.net/test/11
Ot:http://fiddle.jshell.net/test/11
Şimdi bir kaç şey, benim bilgim gelince şaşırdım:
Pervane:JavaScript ile herhangi bir değişiklik sonra şu andaki durumda değeri
Güzel bir sorudurBu değeri sayfa yüklendiğinde html olarak tanımlanmıştır.
Şimdi Eğer bu doğruysa
- Neden
prop
action
tam yapmak gibi görünüyor, ve öznitelik değiştirme yok tersine değiştirme değil mi? - Neden
1)
17 *değiştirmek bana hiç mantıklı özniteliği değiştirmek mi? - Neden
2)
19 *değiştirme özelliği değiştirin, bu şekilde bağlantılı olması gerekiyordu?
< / ^ hr .
Test Kodu
HTML
JavaScript
var element = $('form');
var property = 'action';
/*You should not need to modify below this line */
var body = $('body');
var original = element.attr(property);
body.append('<h1>Prop Modification test</h1>');
element.prop(property, element.prop(property) 1);
body.append('Prop: ' element.prop(property) '<br />');
body.append('Attr: ' element.attr(property) '<hr />');
//reset
element.prop(property, original);
element.attr(property, original);
body.append('<h1>Attr Modification test</h1>');
element.attr(property, element.attr(property) 1);
body.append('Prop: ' element.prop(property) '<br />');
body.append('Attr: ' element.attr(property) '<hr />');
//reset
element.prop(property, original);
element.attr(property, original);
body.append('<h1>Attr then Prop Modification test</h1>');
element.attr(property, element.attr(property) 1);
element.prop(property, element.prop(property) 1);
body.append('Prop: ' element.prop(property) '<br />');
body.append('Attr: ' element.attr(property) '<hr />');
//reset
element.prop(property, original);
element.attr(property, original);
body.append('<h1>Prop then Attr Modification test</h1>');
element.prop(property, element.prop(property) 1);
element.attr(property, element.attr(property) 1);
body.append('Prop: ' element.prop(property) '<br />');
body.append('Attr: ' element.attr(property) '<hr />');
CEVAP
Ne yazık ki linkler hiç biri çalışmıyor :(
Bazı bilgiler olsa da, attr
tüm özellikler için. prop
özellikleri.
Eski bir WordPress kullanmak sürümlerinde (&; 1.6 lt), biz sadece attr
vardı. Gibi bir şey yapmak zorunda nodeName
, selectedIndex
defaultValue
gibi DOM özelliklerini almak için:
var elem = $("#foo")[0];
if ( elem ) {
index = elem.selectedIndex;
}
prop
eklendi çok kötüydü,:
index = $("#foo").prop("selectedIndex");
Bu harika oldu, ama rahatsız edici bu geriye dönük uyumlu değildi:
<input type="checkbox" checked>
checked
, hiçbir özniteliği vardır ama bir özelliği checked
adı var.
Yani, finalde 1.6, attr
yapı işleri kırmadı ki prop
bunu yapar. Bazı insanlar bunu telafi etmek istedim, ama doğru kararı şeyleri her yerde kırmadı olarak yapıldı.
İlgili:
Prop: JavaScript ile herhangi bir değişiklik sonra şu andaki durumda değeri
Ot: sayfa yükleme html olarak tanımlanan, değeri.
Bu her zaman doğru değildir birçok kez özniteliği aslında değişti, ama kontrol gibi özelliklerini değiştirmek için bir öznitelik yok, pervane kullanmak gerekir.
Referanslar:
'jQuery arasındaki fark ne .() va...
jQuery Veri vs bir Sorudur?...
.() prop vs .()bir sorudur...
Nasıl tüm web sitesi üzerinde büyük JS...
jQuery onay kutusu durumunu kontrol ol...