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还是有区别的。

这个js、jq都没办法判断是否定义某个css,
这里可以提供两个解决思路: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的主要内容,如果未能解决你的问题,请参考以下文章

jquery怎么判断是不是有某个子元素

JS中如何判断数组中是不是包含某一元素

JQuery如何判断值中是不是包含某个值?

jquery怎么判断对象是不是存在

在jquery中怎么判断是不是存在

js中如何判断数组中是不是含有某一项