jQuery - 获取正文字体大小的所有元素

时间:2017-03-12 22:09:18

标签: jquery

我正在尝试使用jquery获取所有元素,并将它们放入数组中,我有以下代码:

var elements = $("*");

                console.log(elements);

                $.each(elements, function(){

                        if($.inArray({element: $(this), orginalSize:$(this).css("font-size"), size:$(this).css("font-size")}, fontSizeArray) !== -1)
                        {

                                fontSizeArray.push({element: $(this), orginalSize:$(this).css("font-size"), size:$(this).css("font-size")});
                        }

                });

                console.log(fontSizeArray);

但我在这里遇到一些问题:

  1. $(“*”)甚至在标题中获取所有元素,所以我有元标记和不需要的东西,所以我试图获取体内的所有元素。

  2. 我查看数组中是否存在该项的条件也无效,当我有这个代码时,fontSizeArray为空,如果我删除if条件,我的数组就会被填充。

  3. 在我的数组中,我正在尝试获取元素名称,即div,p,a或其他,并将其分配给元素:但使用$(this)不起作用。

  4. 我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

1。如何在体内找到元素?

您可以使用jQuery find()方法选择正文以完成此操作:

$('body').find('*');

2。其他问题?

所以,最终你拥有它的代码并没有真正“过滤”你对$.inArray(...)的调用中的任何内容,因为 DOM的每个元素的jQuery对象都是唯一的。

假设您要存储项目的“标签名称”(例如DIV,H2,H3等),我就已经开始尝试这个问题了。我不相信jQuery $.inArray()适用于对象(或者......我无法让它在我的机器上工作)所以我使用Array.prototype.some()方法简化了将完成你想要做的事情:

var elements = $("body").find("*"),
    fontSizeArray = [];

elements.each(function() {
    var obj = {
            element: $(this).prop('tagName'),
            originalSize: $(this).css("font-size"),
            size: $(this).css("font-size")
        };
    if (!fontSizeArray.some(function(item) {
            return item.element === obj.element &&
                item.originalSize === obj.originalSize &&
                item.size === obj.size;
        })) {
        fontSizeArray.push(obj);
    }
});

console.log(fontSizeArray);