jquery -Get значения свойств CSS для еще не примененного класса

у меня такой жевопрос спросил здесь (не смог прокомментировать, возможно, у меня нет привилегий), я хочу получить значение ширины CSS, определенное в таблице стилей, но еще не примененное ни к одному элементу в dom, (его загрузочное CSS с сеткой с отзывчивыми медиа-запросами)

 .span6 {
 width: 570px;
 }

Однако решение, представленное в вышеупомянутом вопросе, возвращает 0, т.е.

$('<div/>').addClass('span6').width();

но работает, если я делаю что-то подобное

 $('<div/>').addClass('span6').hide().appendTo('body').width();

любой простой способ без добавления этого div?

 Jaideep Singh09 июн. 2012 г., 08:46
@MoinZaman Я хочу сделать некоторые манипуляции, прежде чем решить, нужно ли добавлять конкретный класс или нет, в div есть изображение, его ширина может быть любой
 Moin Zaman09 июн. 2012 г., 08:19
Почему ты хочешь это сделать? Может быть, есть альтернативный / более простой способ решить вашу проблему?
 leopic09 июн. 2012 г., 08:19
Если вы ДЕЙСТВИТЕЛЬНО (действительно) хотите избежать вставки элемента, вы можете создать карту с нужной вам шириной: p
 Fabrício Matté09 июн. 2012 г., 08:35
В прошлый раз я видел & quot; получить свойства стиля с помощью jquery & quot; вопрос закончился с некоторым регулярным выражением в качестве принятого ответа, я думаю, что ваше текущее решение достаточно простое. Вы могли бы позвонить.remove() очистить DOM после получения желаемого значения свойства CSS или всегда иметьdisplay:none элемент для применения CSS и получения значения, впоследствии удаляя примененный класс CSS.
 Bobby Jack13 июн. 2012 г., 14:24
возможный дубликатGet CSS properties values for a not yet applied class - Я был автором оригинала «плохо». ответ, который с тех пор был обновлен с дополнительной информацией.

Ответы на вопрос(2)

чтобы помочь с более сложными селекторами CSS.

var getCSS2 = function (prop, fromClass, $sibling) {

    var $inspector = $("<div>").css('display', 'none').addClass(fromClass);
    if($sibling != null){
        $sibling.after($inspector); //append after sibling in order to have exact 
    } else {
        $("body").append($inspector); // add to DOM, in order to read the CSS property
    }
    try {
        return $inspector.css(prop);
    } finally {
        $inspector.remove(); // and remove from DOM
    }
};

JSFiddle

Решение Вопроса

вам нужно динамически вставить скрытый элемент в DOM, прочитать свойство и, наконец, удалить его:

var getCSS = function (prop, fromClass) {

    var $inspector = $("<div>").css('display', 'none').addClass(fromClass);
    $("body").append($inspector); // add to DOM, in order to read the CSS property
    try {
        return $inspector.css(prop);
    } finally {
        $inspector.remove(); // and remove from DOM
    }
};

jsFiddle здесь

 16 окт. 2013 г., 15:28
Я пробовал это дляbackground-position, но он возвращается0% 0% вместо фактической стоимости ...
 16 окт. 2013 г., 15:38
@AlexFilipovici Вы должны делать что-то не так. Вы можете увидеть здесь, что работает отлично.jsfiddle.net/cVfFc/1
 Jaideep Singh09 июн. 2012 г., 08:50
может быть, это единственный простой способ сделать это с помощью «меньше писать и делать больше jquery» :П
 09 июн. 2012 г., 08:46
Это в основном то, что делает OP -.css('display', 'none') практически так же, как.hide(), но +1 за расширение его до полезной функции иfinally блок, который запускается "после"return.
 16 окт. 2013 г., 17:14
Вы правы, в моем пути к файлу CSS была опечатка.

Ваш ответ на вопрос