2012-06-09 20 views
9

bende aynı question sordu (bu konuda yorum yapamam, belki bir ayrıcalık yok), stil sayfasında tanımlı css genişliği değerini almak istiyorum ama henüz değil sanki bir şey yaparsak dom herhangi bir öğeye ait uygulanan (duyarlı medya sorgu ile ızgara ile önyükleme css)jquery -Get henüz uygulanmayan bir sınıf için CSS özellikleri değerleri

.span6 { 
width: 570px; 
} 

ancak ancak bu

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

gibi yukarıdaki soru geri başvurulan 0 ie sağlanan çözüm çalışır bu gibi

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

Bu div eklenmeden herhangi bir kolay yol?

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 here

+0

GERÇEKTEN (gerçekten) elemanını takmadan kaçınmak istiyorsanız, ihtiyacınız genişliklerine sahip bir harita yapabiliriz: p – leopic

+0

Bunu neden istiyorsun? Belki sorununuzu çözmek için alternatif/kolay bir yol var mı? –

+0

En son "jquery ile stil özellikleri al" sorusunu yanıtladım, kabul edilen yanıt olarak bazı regex ile bitti, mevcut çözümün yeterince basit olduğunu tahmin ediyorum. İstediğiniz CSS özellik değerini aldıktan sonra DOM'ı temizlemek için .remove() 'yi veya her zaman CSS'yi uygulamak ve CSS sınıfını daha sonra kaldırmak için bir" display: none "öğesine sahip olmanız gerekir. –

cevap

28

Jose. Daha karmaşık css seçicilere yardımcı olmak için değiştirdim.

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

+1

Temelde OP'in yaptığı şey budur - '.css ('display', 'none')' '.hide()' ile hemen hemen aynı, ancak +1'i kullanılabilir bir işleve ve 'finally' bloğuna genişletmek için +1 bir 'dönüş' sonra çalışır. –

+0

, "daha az yaz ve daha fazla jQuery" ile yapmanın tek kolay yolu olabilir: P –

+0

Bunu "background-position" için denedim, ancak gerçek değer yerine "% 0% 0" döndürüyor. .. –

4

Büyük cevabı ölçütü: bunu kaldırmak dinamik nihayet DOM gizli bir öğe eklemek özelliği okumak ve gereken CSS özellik değeri okumak için

İlgili konular