Spa*_*rky 11 jquery attributes version default-value
我在jQuery中有一个简单的脚本,与jQuery 1.5.2完美配合,你可以在这个jsFiddle中看到.应该发生的是,当您将焦点带到文本字段时,将删除默认值.如果将该字段留空,则将原始默认值放回原位.
但是,相同的确切代码(仅使用jQuery 1.6.3)不起作用.(不工作意味着默认值保留在文本框中,直到您手动删除它为止,如您在此jsFiddle中所见.
控制台中没有脚本错误,并且该功能的其他方面也可以运行.您可以hover()在两个jsFiddles中看到该部分正常工作.
汇总版(根本问题)
jQuery的1.6.3正在恢复undefined的.attr('defaultValue').
但是,jQuery 1.5.2正在返回期望的值.attr('defaultValue').
题:
有谁知道为什么会发生这种情况?(对我来说,它看起来像一个jQuery错误.)
以下仍在工作......
document.getElementById().defaultValue
Run Code Online (Sandbox Code Playgroud)
...但我认为在jQuery可用的情况下必须这样做是非常难看的.
我愿意接受其他建议.
Šim*_*das 25
用途prop():
$( '#q' ).prop( 'defaultValue' )
Run Code Online (Sandbox Code Playgroud)
现场演示: http ://jsfiddle.net/kHBsD/8/
您看,'defaultValue'如果您查看HTML源代码,则不是内容属性(HTML属性),您可以自己看到.相反,它是HTMLInputElement DOM元素节点的属性.
请参见:https://developer.mozilla.org/en/DOM/HTMLInputElement
HTML源代码中存在属性.
DOM树中存在属性.
当浏览器解析HTML源代码时,将<input>解释HTML 元素并创建相应的HTMLInputElement DOM节点.这个DOM元素包含许多属性('defaultValue'作为其中之一).
在这里,我重构了你的代码:
$( '.autoclear' ).
focus( function () {
if ( this.value === this.defaultValue ) {
this.value = '';
$( this ).removeClass( 'blur' ).addClass( 'focus' );
}
}).
blur( function () {
if ( this.value === '' ) {
this.value = this.defaultValue;
$( this ).removeClass( 'focus' ).addClass( 'blur' );
}
});
Run Code Online (Sandbox Code Playgroud)
现场演示: http ://jsfiddle.net/kHBsD/9/
prop()没有必要 - 你有this参考,所以你可以直接访问该属性.此外,不需要那些悬停处理程序,只需使用input:hoverCSS规则.
| 归档时间: |
|
| 查看次数: |
15189 次 |
| 最近记录: |