在练习jQuery表格变色例子过程中,发现了一下几个问题:

  1. 在IEEdge浏览器中切换选中行会出现上一个表格行背景色被吃掉的情况;
  2. 在chrome中从上向下单击行中任意单元可以选中该行,而从下往上单击虽选中了行,而前面的按钮列未显示选中状态

针对以上问题,查阅了资料后,发现了原因,以及解决方法:

  1. 为tbody设置border-collapse:collapse;方可解决吃色问题
  2. 在引用jQuery版本是1.6之后的,设置radio的checked属性不应使用attr()方法,应使用prop()方法

在之前的jQuery版本中,都是使用attr()访问对象的属性,比如取一个图片的alt属性,就可以这样做$('#img').attr('alt');但是在某些时候,比如访问input的disabled属性时,会有些问题,在有些浏览器中,只要写了disable属性就可以,有些则要写:disabled="disabled"。所以,从1.6版本开始,jQuery使用新方法prop()获取以及设置这些属性,返回标准属性:true/false。按照官方说明,如果设置disabled和checked这些属性,应使用prop()方法(摘自《锋利的jQuery(第2版)》)


附上我的代码

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>表格变色</title>
<style type="text/css">
table{
margin:auto;
border:1px solid #ccc;
padding:20px;
text-align:left;
/*添加上border-collapse属性设置之后就可以解决在IEedge中选择不同行之后吃色的问题*/
border-collapse:collapse;
}
tr{
padding:0px;
margin:0px;
}
td{
width:100px;
padding: 0px;
} th{
border-bottom: 1px solid #ccc;
}
/*奇数行*/
.odd{
background: #ffffee;
}
/*偶数行*/
.even{
background: #fff38f;
} .selected{
background: gold;
color:#fff;
}
</style>
<script type="text/javascript" src="../jquery-3.4.1.js"></script>
<script type="text/javascript">
$(function(){
$("tbody>tr:odd").addClass("odd");//先排除第一行,然后给奇数行添加样式
$("tbody>tr:even").addClass("even");//先排除第一行,然后给偶数行添加样式 $('tbody>tr').click(function(){
$(this)
.addClass('selected')
.siblings().removeClass('selected')
.end()
// .find(':radio').attr("checked",true);//在设置input的checked属性的时候,使用的是jq中的attr()方法;这个方法在jquery1.6以后的版本使用的时候会出现问题,应换成prop()方法。prop()方法通常用来设置元素固有的属性,比如disabled和checked属性。
.find(':radio').prop("checked",true);
}); // 如果单选框默认情况下是选择的,则高色.
// $('table :radio:checked').parent().parent().addClass('selected');
//简化:
// $('table :radio:checked').parents("tr").addClass('selected');
//再简化:
$('tbody>tr:has(:checked)').addClass('selected'); })
</script>
</head>
<body>
<table>
<thead>
<tr><th></th><th>姓名</th><th>性别</th><th>暂住地</th></tr>
</thead>
<tbody>
<tr><td><input type="radio" name="choice" checked='checked'></td><td>张三</td><td>男</td><td>北京</td></tr>
<tr><td><input type="radio" name="choice"></td><td>李四</td><td>男</td><td>上海</td></tr>
<tr><td><input type="radio" name="choice"></td><td>王五</td><td>女</td><td>北京</td></tr>
<tr><td><input type="radio" name="choice"></td><td>小明</td><td>男</td><td>上海</td></tr>
<tr><td><input type="radio" name="choice"></td><td>韩梅梅</td><td>女</td><td>北京</td></tr>
<tr><td><input type="radio" name="choice"></td><td>大牛</td><td>男</td><td>上海</td></tr>
</tbody>
</table>
</body>
</html>

每天进步一点点

表格变色示例中发现的问题——attr()与prop()的更多相关文章

  1. jquery中dom元素的attr和prop方法的理解

    一.背景 在编写使用高版本[ jQuery 1.6 开始新增了一个方法 prop()]的jquery插件进行编写js代码的时候,经常不知道dom元素的attr和prop方法到底有什么区别?各自有什么应 ...

  2. JavaScript+CSS+DIV实现表格变色示例

    <!DOCTYPE html> <html> <head> <title>colortable.html</title> <scrip ...

  3. CSS中的content和attr的用法

    问题缘起 在闲看别人网站时发现了这样的代码 <span class="hamburger icon" data-icon="C"> .icon:be ...

  4. 2017.9.24 基于HTML+JavaScript+CSS的开发案例&&JavaScript+CSS+DIV实现表格变色

    1.JavaScript+CSS+DIV实现下拉菜单 1.1 层标签<div> 基本语法: <div id="层编号" style="position: ...

  5. jquery中attr()与prop()区别

    我们知道jquery中获取元素属性有两种常见的方法,一个是attr()方法,这个是用的比较多的,也是我们第一个想到的.另外一个就是prop()方法了,这个方法之前很少用到,它是jquery1.6之后新 ...

  6. jQuery 中 attr() 和 prop() 方法的区别

    前几天,有人给 Multiple Select 插件 提了问题: setSelects doesn't work in Firefox when using jquery 1.9.0 一直都在用 jQ ...

  7. jQuery中.attr()和.prop()的区别

    之前学习jQuery的时候,学习到了两种取得标签的属性值的方法:一种是elemJobj.attr(),另一种是elemJobj.prop().而在学习JS的时候,只有一种方法elemObj.getAt ...

  8. jquery中attr()与prop()函数用法实例详解(附用法区别)

    本文实例讲述了jQuery中attr()与prop()函数用法.分享给大家供大家参考,具体如下: 一.jQuery的attr()方法 jquery中用attr()方法来获取和设置元素属性,attr是a ...

  9. jquery中attr与prop的区别

    先从一个老生常谈的问题说起,使用jquery实现全选全不选.楼主先使用的jquery版本是 jquery-1.11.1.min.js 全选<input type="checkbox&q ...

随机推荐

  1. VTK 编译过程中出现的hdf5长度(I64)错误解决办法

    最近在使用vtk和cuda做大规模图像处理方面的问题研究,在编译vtk的过程中发现第三方库hdf5不能够解决I64长度的探测识别问题.为了节约大家的时间,现在把我经过实践得到的解决方案共享出来,这里要 ...

  2. pandas库简介和数据结构

    pandas简介 pandas是一个强大的Python数据分析的工具包.是基于Numpy来构件的. pandas提供快速.灵活和富有表现力的数据结构. 主要功能: 具备对其功能的数据结构DataFra ...

  3. Unity Audio Source Properties

    Audio Clip 音频剪辑 将播放声音的剪辑文件 Mute 静音 Bypass Effects 直通效果 应用音频源的快速“直通”过滤效果.一个简单的方法来打开/关闭所有特效 Output 产量  ...

  4. cobbler批量安装系统

    cobbler是一个可以实现批量安装系统的Linux应用程序.它有别于pxe+kickstart,cobbler可以实现同个服务器批量安装不同操作系统版本. 1.系统环境准备及其下载cobbler 1 ...

  5. redis 锦集

    redis 锦集url:http://blog.csdn.net/lqadam/article/category/7479450 1. redis 排序 2.redis 慢查询.位数组和事务 3.re ...

  6. c++ 事件回调 java

    #pragma once #ifdef __cplusplus extern "C" { #endif typedef void(*sig_t)(int); int FirstEl ...

  7. 操作系统汇编语言之AT&T指令

    转载时格式有问题,大家看原版吧! 作者:EwenWanW  来源:CSDN  原文:https://blog.csdn.net/xiaoxiaowenqiang/article/details/805 ...

  8. Java回调机制的理解

    用一句话讲明回调机制就是,在A类里面拥有一个类B的对象,调用B类的某个方法并把自身引用传入,在B类的这个方法里面又通过传进来的A的引用来调用A类的某个方法(这个最后调用的A类的方法就叫做回调方法). ...

  9. MySQL学习-数据库设计以及sql的进阶语句

    1.数据库设计 关系型数据库建议在E-R模型的基础上,我们需要根据产品经理的设计策划,抽取出来模型与关系,制定出表结构,这是项目开始的第一步 在开发中有很多设计数据库的软件,常用的如power des ...

  10. Django REST framework JWT学习

    1.JWT学习 在用户注册或登录后,我们想记录用户的登录状态,或者为用户创建身份认证的凭证.我们不再使用Session认证机制,而使用Json Web Token认证机制. Json web toke ...