Как получить все атрибуты класса и стиля тега body в одной переменной - PullRequest
0 голосов
/ 13 сентября 2011

У меня есть следующее

<body class="test test1 test2" style="color:red; font-size:12px">...</body>

Используя jQuery, как я могу сохранить все атрибуты тега body в переменной x. Другими словами, я хочу

var x = 'class="test test1 test2" style="color:red; font-size:12px"';

Ответы [ 3 ]

4 голосов
/ 13 сентября 2011

Вы можете использовать element.attributes
что-то вроде:

var body = document.body,  
    attries = body.attributes,
    arr     = [];
for(var i=0, len=attries.length; i<len; i++){
    var attr = attries[i];
    arr.push(attr.nodeName + '="' + attr.nodeValue + '"');
}
var x = arr.join(" ");
alert(x);

См. Здесь: http://jsbin.com/ihiwod

ОБНОВЛЕНИЕ:

Однако в IE (<= 7) приведенный выше код будет генерировать больше атрибутов, чем вы хотите, потому что атрибуты, которые не установлены, также добавляются в <code>element.attributes в этих браузерах.

улучшенный кодэто:

var body = document.body,  
    attries = body.attributes,
    arr     = [];
for(var i=0, len=attries.length; i<len; i++){
    var attr = attries[i];
    if(attr.specified){  
        var attr_name = attr.nodeName,  
            attr_val  = attr_name === "style" ? body.style.cssText  
                                              : attr.nodeValue;
        arr.push(attr_name  + '="' + attr_val   + '"');
    }
}
var x = arr.join(" ");
alert(x);
3 голосов
/ 13 сентября 2011
var attrs = document.body.attributes;
var attributes = [];
for(var i=0; i<attrs.length; i++) {
    attributes.push(attrs[i].nodeName + '="' + attrs[i].nodeValue + '"');
}
var x = attributes.join(" ")
0 голосов
/ 13 сентября 2011

Насколько я знаю, jQuery не может сделать это сам по себе, но есть плагин: http://plugins.jquery.com/project/getAttributes. Возможно, вы захотите проверить это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...