Agora, esta não é apenas outra questão de qual é a diferença , eu fiz alguns testes (http://jsfiddle.net/ZC3Lf/) modificando o prop
e attr
de <form action="/test/"></form>
com a saída sendo:
1) Teste de modificação de prop.
Prop:http://fiddle.jshell.net/test/1
Attr:http://fiddle.jshell.net/test/1
2) Teste de modificação de atributo
Prop:http://fiddle.jshell.net/test/1
Attr:/test/1
3) Teste de modificação de atributo, em seguida,
Prop:http://fiddle.jshell.net/test/11
Atr:http://fiddle.jshell.net/test/11
4) Teste de Modificação de Prop, em seguida,
Prop:http://fiddle.jshell.net/test/11
Attr:http://fiddle.jshell.net/test/11
Agora estou confuso sobre algumas coisas, tanto quanto meu conhecimento vai:
Prop: O valor em seu estado atual após qualquer modificação via JavaScript
Attr: O valor como foi definido no html no carregamento da página.
Agora, se isso estiver correto,
- Por que modificar o
prop
parece torná-loaction
totalmente qualificado e, inversamente, por que modificar o atributo não? - Por que modificar o
prop
in1)
modifica o atributo, que não faz sentido para mim? - Por que modificar o
attr
em2)
modifica a propriedade, eles devem ser vinculados dessa forma?
Código de Teste
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 />');