2012-01-23 23 views
9

:after ile CSS'de tanımlanmış olan en elemanın konumunu dinamik olarak değiştiriyorum. Ben öyle değiştirmeye çalıştı:jQuery ve pseudo-elements

$(function(){ 
    $('div::after').css({'top':'20px'}) 
}) 

Ama çalışmıyor. Pozisyonu değiştirmenin herhangi bir yolu var mı?

cevap

15

Yapamazsınız. :after veya :before tarafından oluşturulan içerik DOM'ın bir parçası değildir ve bu nedenle seçilemez veya değiştirilemez. Bu example fiddle bir göz ve Firebug veya benzeri DOM incelemek durumunda

Eğer sözde eleman DOM ağacında mevcut olmadığını göreceksiniz.

potansiyel bir çözüm değiştirmek istediğiniz öğeye bir sınıfı uygulamak için olurdu ve CSS uygun şekilde bu sınıf stil:

$("div").addClass("newClass"); 

this fiddle for an example bakınız.

1

eklenti CSS:

p.special:before { 
    content: "bar"; 
    position: absolute; 
    top : 10px; 
} 

yukarıda konulmuştur kod sayfadaki ilk biridir stil sayfasını varsayarak, bunu değiştirmek için kullanın:

document.styleSheets[0].addRule('p.special:before','top: 15px;');