jQ中css()和addClass的区别之优先级

  笔者在实现点击表格中某行添加高亮的效果时,发现一个css()和addClassd()的冲突,具体代码如下:

<style>
    .se
{
    background:#FF6500;
    color:#fff;
}
</style>
<script type="text/javascript">
        $(function(){
            $("tbody>tr:odd").css("background-color","#FFF38F");
            $("tbody>tr:even").css("background-color","#FFFFEE");
            $("tbody>tr").click(function(){
                $(this).addClass("se")
                    .siblings().removeClass("se")
                    .end()
                    .find(‘:radio‘).attr(‘checked‘, true);
            })
        });
    </script>

  单从代码逻辑上来看,是没有错的。点击后字体颜色也确实改变了,只是背景颜色却不会改变。按理说会按顺序来,最后设置的样式会把之前的同类样式覆盖掉。实际却没有。

  这是为什么呢?先从优先级的角度分析。

  我们知道当外部样式、内部样式和内联样式同一样式规则同时应用于同一个元素的时候,优先级如下 :
  外部样式 < 内部样式 < 内联样式 (ps:这个优先级在绝大多数情况下来说能正确的实现,但其实需要涉及到权重的计算)

1..addClass()方法是通过增加class名的方式,那么这个样式是在外部文件或者内部样式中先定义好的,等到需要的时候在附加到元素上;

2.通过.css()方法处理的是内联样式,直接通过元素的style属性附加到元素上的 ;

所以通过.css方法设置的样式属性优先级要高于.addClass方法,点击时所添加的类名无法覆盖css()设置的样式。

时间: 2024-10-06 09:33:21

jQ中css()和addClass的区别之优先级的相关文章

JQ中get()与eq()的区别

.eq() : 减少匹配元素的集合,根据index索引值,精确指定索引对象. .get() : 通过检索匹配jQuery对象得到对应的DOM元素. 同样是返回元素,那么eq与get有什么区别呢? eq返回的是一个jQuery对象,get返回的是一个DOM对象.举个例子: 1 $( "li" ).get( 0 ).css("color", "red"); //错误 2 $( "li" ).eq( 0 ).css("co

JQ中find()与filter()的区别

刚开始学的时候,对于find()和filter()有点理不清楚,下面通过案例相信就可以很快的区分清楚 以下是代码 find弹出的是 filter()弹出的是 下面我们添加div的class是rain find()弹出结果是 fliter弹出结果是 通过以上案例,我们就清楚的知道,find()是查找某个元素内部的元素 filter()查找的是某个元素的自身,而不是内部的元素

jq中.prop()与attr()的区别

一,定义 prop() 方法设置或返回被选元素的属性和值.prop() 方法应该用于检索属性值 attr()  方法设置或返回被选元素的属性和值.如需检索 HTML 属性,请使用 attr() 方法代替. 固有属性用prop方法: 自定义属性用attr方法. 典型的例子:判断checkbox是否选中 $('#all').on('click',function(){ if($("#all").is(':checked')){ $(".childbox").each(f

jQ中prop与attr的区别

1.prop适用于HTML元素本身就带有的固有属性 2.attr适用于HTML元素我们自定义的属性 <input type="checkbox" value="复选框" /> console.log($('[input="checkbox"]').attr("checked")) //undefined console.log($('[input="checkbox"]').prop("

.css()与.addClass()设置样式的区别

对于样式的设置,addClass与css方法两者之间有什么区别? 可维护性: .addClass()的本质是通过定义个class类的样式规则,给元素添加一个或多个类.css方法是通过JavaScript大量代码进行改变元素的样式 通过.addClass()我们可以批量的给相同的元素设置统一规则,变动起来比较方便,可以统一修改删除.如果通过.css()方法就需要指定每一个元素是一一的修改,日后维护也要一一的修改,比较麻烦 灵活性: 通过.css()方式可以很容易动态的去改变一个样式的属性,不需要在

JQ中bind(),live(),delegate()事件方法的区别

[导读] bind(), live(), 和 delegate()这三个方法的区别并不是非常明显.弄清楚这些区别对我们写出简介的代码和预防我们的应用中出现bugs是非常有帮助的. jQuery团队在1 7版本中发布了一个用于绑定事件的新方法叫 bind(), .live(), 和 .delegate()这三个方法的区别并不是非常明显.弄清楚这些区别对我们写出简介的代码和预防我们的应用中出现bugs是非常有帮助的. jQuery团队在1.7版本中发布了一个用于绑定事件的新方法叫做on.这个方法包含

CSS中link和@import的区别

你对CSS中link和@import的区别是否熟悉,这里和大家分享一下,@import  属性用来指定导入的外部样式表及目标设备类型, link除了调用CSS外还可以有其他作用譬如声明页面链接属性,声明目录,rss等等,而@import就只能 调用CSS. CSS中link和@import有什么区别? 定义  ◆link元素 HTML和XHTML都有一个结构,它使网页作者可以增加于HTML文档相关的额外信息.这些额外资源可以是样式化信息(CSS).导航助手.属于另 外形式的信息(RSS).联系信

【技术】css中em与px的区别

em指字体高,任意浏览器的默认字体高都是16px.所以未经调整的浏览器都符合: 1em=16px.那么12px=0.75em, 10px=0.625em.为了简化font-size的换算,需要在css中的body选择器中声明body{font-size: 62.5%;},这就使em值变为 16px*62.5%=10px, 这样12px=1.2em, 10px=1em, 也就是说只需要将你的原来的px数值除以10,然后换上em作为单位就行了.em有如下特点: 1. em的值并不是固定的: 2. e

AmazeUI(妹子UI)中CSS组件、JS插件、Web组件的区别

AmazeUI(妹子UI)是非常优秀的国产前端UI,现在来介绍一下AmazeUI中CSS组件.JS插件与Web组件的区别. CSS组件顾名思义就是仅使用CSS渲染而成的组件,而JS插件也很容易理解,就是由CSS渲染和JS来控制行为的组件.比较不好理解就是Web组件,好像跟JS插件意思差不多,都是CSS和JS组成的.它们到底区别在哪?我们重点来讲这个.我们通过学习如何调用Web组件(其中的手风琴组件)来一步一步了解其与JS插件的区别. 示例01.Web组件-直接使用 (请下载附件查看示例) 示例中