表单下拉选项使用selected设置,发现第一次默认选中成功,在页面不刷新的情况下,再次下拉,selected属性设置了,默认选中不生效

 在手机端有些浏览器用jQuery的attr()方法设置selected无效。

研究发现是浏览器兼容的问题

一,解决浏览器缓存问题,在HTML中给<select>标签加上autocomplete="off"属性

二,jQuery中添加selected属性使用.prop("selected",true)进行添加



attr 与 prop的区别

在高版本的jquery引入prop方法后,什么时候该用prop?什么时候用attr?它们两个之间有什么区别?这些问题就出现了。

关于它们两个的区别,网上的答案很多。这里谈谈我的心得,我的心得很简单:

  • 对于HTML元素本身就带有的固有属性,在处理时,使用prop方法。
  • 对于HTML元素我们自己自定义的DOM属性,在处理时,使用attr方法。

 

上面的描述也许有点模糊,举几个例子就知道了。 

<a href="http://www.baidu.com" target="_self" class="btn">百度</a>

 这个例子里<a>元素的DOM属性有“href、target和class",这些属性就是<a>元素本身就带有的属性,也是W3C标准里就包含有这几个属性,或者说在IDE里能够智能提示出的属性,这些就叫做固有属性。处理这些属性时,建议使用prop方法。

<a href="#" id="link1" action="delete">删除</a>

这个例子里<a>元素的DOM属性有“href、id和action”,很明显,前两个是固有属性,而后面一个“action”属性是我们自己自定义上去的,<a>元素本身是没有这个属性的。这种就是自定义的DOM属性。处理这些属性时,建议使用attr方法。使用prop方法取值和设置属性值时,都会返回undefined值。

 

再举一个例子:

<input id="chk1" type="checkbox" />是否可见<input id="chk2" type="checkbox" checked="checked" />是否可见

像checkbox,radio和select这样的元素,选中属性对应“checked”和“selected”,这些也属于固有属性,因此需要使用prop方法去操作才能获得正确的结果。

$("#chk1").prop("checked") == false$("#chk2").prop("checked") == true

如果上面使用attr方法,则会出现:

$("#chk1").attr("checked") == undefined$("#chk2").attr("checked") == "checked"

全文完。


©著作权归作者所有:来自51CTO博客作者木子的昼夜的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. JavaScript:留言板添加字数实时统计与禁止超出功能,部分字符串和
  2. 【JS基础入门】JavaScript原生Ajax请求与响应处理方式及JSON数据
  3. 【JavaScript案例】视口高度,元素位置、滚动高度等位置属性详解及
  4. 0407作业-留言板、字符串和数组的常用方法
  5. 硬盘出现“此卷不包含可识别的文件系统”的解决方法
  6. kNN之改进约会网站配对效果(附源码)
  7. 一种基于Gradient Boosting的公交车运行时长预测方法
  8. 不产生第三个临时变量的前提交换两组数据
  9. W EB:一种基于网络嵌入的互联网借贷欺诈预测方法

随机推荐

  1. android 中添加一个服务
  2. Android 获取屏幕宽高的两种方式
  3. 2013.04.10——— android 图片缓存之三c
  4. 获取安装的应用
  5. Android Studio使用笔记
  6. 2010.12.19——— android 设置组件的高
  7. 【Android】Android用tabhost实现 界面切
  8. Android Audio 框架简读
  9. 禁止Android的StatusBar下拉
  10. [Android]手动触发OnClick事件