使用jQuery过滤器函数复制元素的样式

时间:2013-08-13 22:44:38

标签: jquery css filter replacewith

我正在编写一个脚本,在页面上查找具有特定大小的元素,并用相同大小的图像替换它们。我使用filter和replaceWith正确地使用替换函数,但是我在测试脚本时注意到我需要复制原始元素的样式以确保它不会影响页面的格式。

这是我当前的替换脚本,工作正常:

function findElements(Width,Height) { 
    $("*").filter(function () {
        return $(this).width() == Width && $(this).height() == Height;
    }).replaceWith("<img src='http://mydomain.com/image.jpg'  />");
}

我在jQuery CSS plugin that returns computed style of element to pseudo clone that element?找到了一个脚本来复制样式。我尝试声明样式变量但它未定义。不知道该怎么做:

(function($){
    $.fn.getStyleObject = function(){
        var dom = this.get(0);
        var style;
        var returns = {};
        if(window.getComputedStyle){
            var camelize = function(a,b){
                return b.toUpperCase();
            }
            style = window.getComputedStyle(dom, null);
            for(var i=0;i<style.length;i++){
                var prop = style[i];
                var camel = prop.replace(/\-([a-z])/g, camelize);
                var val = style.getPropertyValue(prop);
                returns[camel] = val;
            }
            return returns;
        }
        if(dom.currentStyle){
            style = dom.currentStyle;
            for(var prop in style){
                returns[prop] = style[prop];
            }
            return returns;
        }
        return this.css();
    }
})(jQuery);    

function findElements(Width,Height) { 
            $("*").filter(function () {
                return $(this).width() == Width && $(this).height() == Height;
                    var style = $(this).getStyleObject();
            }).replaceWith("<img src='http://mydomain.com/image.jpg' style=style='"+ style +"'  />");
        }

0 个答案:

没有答案