jquery 判断某元素是不是定义了 CSS
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jquery 判断某元素是不是定义了 CSS相关的知识,希望对你有一定的参考价值。
html:
<p class="acont"><a >我是一匹来自北方的狼</a></p>
CSS:
p.acont afloat:left; font-size:12px; /*注意此处没有定义margin-right*/
JQUERY:
alert($(".acont a").css("margin-right")); //返回“0px”
疑问:
.acont a在CSS中并没有定义“margin-right”属性,为什么jquery会返回0px呢?
我的目的:
在jquery中判断.acont a是否定义了“margin-right”属性,如果有的话,其值不变,如果没有的话,指定一个“margin-right”属性的值。
有劳了。
可能我没有表达明白,用下面的表格表达可能更明白些。
应该可以看出,判断CSS中是否定义跟0px还是有区别的。
这里可以提供两个解决思路:1、有人已经说了判断值是否等于0;但是这样一来会有个弊端,如果css中确实定义了margin-right:0;也会把它当做未定义处理;
2、把css写成行内样式<a style="float:left; font-size:12px;">的</a>,这样可以获取style的值再判断是否有margin-right;
$(".acont a").each(function()
var ofright = $(this).attr("style").indexOf("margin-right");
if(ofright != (-1))alert("已定义");
else$(this).css("float":"left","font-size":"12px","margin-left":"10px");
);
如果只有一个就不需要循环了
好吧,再给你个思路,
在css中这么定义
.mrmargin-right:5px;
p.acont afloat:left; font-size:12px;
HTML中这么写:
<p class="acont"><a class="mr">我是一匹来自北方的狼</a></p>
这个思路是通过相同样式冲突覆盖来解决的
p.acont a中如果定义了margin-right就会覆盖.mr中的margin-right:5px;,使之不起作用
如果未定义.mrmargin-right:5px;这个就会起作用 参考技术A $("#div").attr("class")得到class的值,判断这个值是否为空。 参考技术B 没有定义margin-right,所以取默认值为0,
可以判断一下
if(parseInt($(".acont a").css("margin-left")) == 0)
$(".acont a").css("margin-left","10px");
JS中如何判断数组中是不是包含某一元素
可以直接使用数组的indexOf方法来判断,如果元素存在于数组中,那么返回元素在数组中的下标值,如果不存在,那么返回-1,但是该方法在某些版本的IE中是不起作用,所以建议使用jquery的inArray方法,该方法返回元素在数组中的下标,如果不存在与数组中,那么返回-1,代码如下所示:
/*** 使用jquery的inArray方法判断元素是否存在于数组中
* @param Object arr 数组
* @param Object value 元素值
*/
function isInArray2(arr,value)
var index = $.inArray(value,arr);
if(index >= 0)
return true;
return false;
参考技术A 遍历比较,没有现成的方法
以上是关于jquery 判断某元素是不是定义了 CSS的主要内容,如果未能解决你的问题,请参考以下文章