Ora, questo non è solo un altro Qual è la domanda differenza , ho fatto alcuni test (http://jsfiddle.net/ZC3Lf/) modificando la prop
e attr
del <form action="/test/"></form>
con l'uscita di essere:
1) Test di modifica
dell'elica Prop:http://fiddle.jshell.net/test/1
Attr:http://fiddle.jshell.net/test/1
2) Test di modifica Attr
Prop:http://fiddle.jshell.net/test/1
Attr:/test/1
3) Attr quindi Test di modifica Prop
Prop:http://fiddle.jshell.net/test/11
Attr:http://fiddle.jshell.net/test/11
4) Prop quindi Attr Test di modifica
Prop:http://fiddle.jshell.net/test/11
Attr:http://fiddle.jshell.net/test/11
Ora sono confuso su un paio di cose, per quanto ne so:
Prop: il valore nel suo stato attuale dopo qualsiasi modifica tramite JavaScript
Attr: il valore come è stato definito nell'html al caricamento della pagina.
Ora se questo è corretto,
- Perché la modifica dell'attributo
prop
sembra rendereaction
pienamente qualificata e, al contrario, perché la modifica dell'attributo non lo fa? - Perché la modifica di
prop
in1)
modifica l'attributo, quello non ha senso per me? - Perché la modifica di
attr
in2)
modifica la proprietà, devono essere collegati in quel modo?
Codice di prova
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 />');