Тепер це не просто якась різниця питання , я зробив деякі тести (http://jsfiddle.net/ZC3Lf/) , що змінює prop
і attr
з <form action="/test/"></form>
з вихідним бути:
1) Підтримка тесту на модифікацію
Підтримка:http://fiddle.jshell.net/test/1
Attr:http://fiddle.jshell.net/test/1
2) Тест модифікації Attr
Реквізит:http://fiddle.jshell.net/test/1
Attr:/test/1
3) Attr, а потім тест модифікації
Prop Prop:http://fiddle.jshell.net/test/11
Attr:http://fiddle.jshell.net/test/11
4) Реквізит, потім тест модифікації
Attr.http://fiddle.jshell.net/test/11
Підтримка: Attr:http://fiddle.jshell.net/test/11
Тепер я розгублений у кількох речах, наскільки я знаю:
Реквізит: значення в його поточному стані після будь-яких модифікацій через JavaScript
Attr: Значення, яке було визначено в HTML на завантаженні сторінки.
Тепер, якщо це правильно,
- Чому модифікація
prop
мабуть робитьaction
повністю кваліфікованою, і навпаки, чому зміна атрибута не відбувається? - Чому зміна атрибута в
prop
in1)
змінює цей атрибут, який не має для мене сенсу? - Чому модифікація в
attr
in2)
модифікує властивість, чи мають вони бути пов'язані таким чином?
Код тесту
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 />');