javascript - jQuery和css函数的准确性

标签 javascript jquery

<分区>

Possible Duplicate:
jQuery and margin: 0 auto

我有以下 HTML:

<p style="margin-left:auto; margin-right:auto; width:200px;">Hello</p>

然后我使用 jQuery 获取 margin-left,如下所示:

alert(window.jQuery(element).css('margin-left'));

但是,它提醒 0px 而不是预期的 auto

为什么会这样,我怎样才能得到汽车?

最佳答案

找到解决办法了!这个小函数将采用 jQuery 选择器,扫描所有样式表,过滤影响给定 DOM 元素的规则,解析这些规则并返回一个对象,其中包含由所有相关继承交互产生的 CSS 规则列表。

<style type="text/css">

    .fool{
        margin-left:200px;
    }

    #fool{
        margin-left:auto;
    }
</style>

<div id="fool" class="fool" style="font-size:100px; height:20px;"></div>

<script type="text/javascript">
    jQuery('document').ready(function($){

        function get_inheritance_result(jQueryElement){
            var styleSheets = document.styleSheets, finalRules = {};
            for(var i in styleSheets) {
                var rules = styleSheets[i].rules || styleSheets[i].cssRules;
                for(var r in rules) {
                var selector = String(rules[r].selectorText);
                    if(selector.indexOf(':') == -1){ //ignoring pseudo selectors, they will not matter here
                        if(jQueryElement.is(selector.toString())) {
                            console.log(selector.toString()); // Will log all the selectors that are affecting the particular DOM element
                            finalRules = $.extend(finalRules, rules[r].style);
                        }
                    }
                }
            }
            //taking any inline css and overriding it on top of our finalRules variable:
            var inlineCSS = jQueryElement.prop('style');
            for(i in inlineCSS){
                if(inlineCSS.hasOwnProperty(i)){
                    if(inlineCSS[i] != ""){
                        finalRules[i] = inlineCSS[i];
                    }
                }
            }

            //and voila!
            return finalRules;
        }

        var style = get_inheritance_result($("#fool"));
        console.log(style); //logs all the resulted css rules
        alert(style.marginLeft); // 'auto'!
        alert(style.fontSize); // '100px'!
    });
</script>

感谢您提出这个问题,在尝试解决该问题时学到了很多东西。

关于javascript - jQuery和css函数的准确性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7703221/

相关文章:

javascript - Canvas /照片 - getImageData 不起作用

Java嵌入html

javascript - .find() 顶层 <p> 标签在 div 中

javascript - Bootstrap Accordion 展开/折叠全部无法正常运行

javascript - scrollabe jqm 弹出窗口不起作用

javascript - 将 JS 对象转换为 JSON 字符串

javascript - 如何将映射的键名更改为嵌套对象?

javascript - 如何在 Javascript 中访问 d3 svg 图表的当前大小属性?

javascript - Spark AR 最新更新后 EACCES 权限被拒绝错误

php - 使用 jquery 创建自动完成字段的最佳方法是什么(使用 mySql 或 XML?)