2009-09-14 16 views
9

Arka plan görüntüsü olan bir öğe için css'den bir özellik almaya çalışırken IE8'de bir hata var.jQuery CSS hatası

el.css({ 'background-position': "10px 10px"}); //set some 
alert(el.css("background-position")); //get the value 

Opera, FF, Chrome, Safari'de "10px 10px" elde ettim. IE8'de undefined olmayacağım. bug report'u açtım ama o zamana kadar bu sorunun iyi bir çözümü olacağını düşünüyorsunuz. Bu değerleri başka bir şekilde nasıl edinmeliyim?

+0

: http://bugs.jquery.com/ticket/4295, bu sorunun ana hata rapordur. Bu yazıdan yola çıkarak "yamaya hoş geldiniz" diye ayarlandı, fakat düzeltme yok. Kullanıcılar, bu gibi gruplanmış CSS özelliklerinde çapraz tarayıcıyı test etmek zorunda kalacaklar. – Blazemonger

cevap

8

this sho birleştirebilirsiniz yardım eder.

o da

Düzenleme kurtarmaya ölü ilk bağlantı, wayback machine ilginç jquery ticket 2462 bağlantılar.

Ve, sadece archive.org'un paketlenmesi durumunda, burada dextrose blog yazısının içeriği. Bir nesnenin arka plan-pozisyonu isterken

jQuery (en azından yukarı sürümü 1.2.6 kadar) Internet Explorer ile bir sorunu var. Diğer bir sınıf tarayıcılarda

$('h1:first').css('background-position'); 

, sırasıyla x-pozisyonu ve elemanının y-pozisyonu temsil eden (piksel ya da% olarak) 2 değerleri alır. Internet Explorer'da (6 ve 7) undefined olsun. Sorun , IE arka plan konumunun ne olduğunu bilmiyor, sadece 2 diğer çağrıları biliyor: background-position-x ve background-position-y. İşte bu sorunu çözmek için bir JavaScript kodudur.

(function($) { 
    jQuery.fn.backgroundPosition = function() { 
    var p = $(this).css('background-position'); 
    if(typeof(p) === 'undefined') 
     return $(this).css('background-position-x') 
       + ' ' + $(this).css('background-position-y'); 
    else return p; 
    }; 
})(jQuery); 

Artık arka plan konumlandırmak bir öğe almak için bu jQuery eklentisi kullanabilirsiniz:

$('h1:first').backgroundPosition(); 
+0

dekstroz bağlantı ok ve işleri iyi bir öneri sayesinde –

+2

İlk bağlantı öldü –

+0

Bu hızla yazma yalnızca bağlantıları olan cevaplar sorundur.:.... bağlantısını yanıtın yararlı olur süresi dolarsa – Arkana

1

Arka plan özelliğini uyarırsanız, aynı zamanda konumu da alırsınız. İlk düşünebildiğim Çok kötü bir çözüm, ama ...

alert(el.css("background")); //url(some/url/to/image.jpg) no-repeat 10px 10px 

Ve sonra olurdu sadece "px"

+0

Ünitenin pikselin kendisinin olacağını tahmin edemezsiniz. – rahul

+0

teknik olarak bu çalışması gerekir ama FF mülkiyet css fonksiyonu ile kuruldu olmadığı için ve gerçek css eklenmez ancak –

4

tarafından takip edilmektedir sayısal değerleri asla ettik çıkmak Bu çalıştı ama ben pozisyonları isteyerek bireysel u öylesine bir sonuç almak bulundu:

alert(el.css("background-position-y")); //get the y value 
alert(el.css("background-position-x")); //get the x value 

o zaman iki :)

+0

bu bir IE, Safari, Chrome çalışır stil özelliğinde dynamicly takılı değil :( –

1

Sonunda onları ayrıştırmak olacaktır: kuşaklar için

alert(el.attr('style')); // this seems to work in all browsers