2010-02-25 2 views
1

Кто-нибудь знает, как я могу получить все стили, применяемые к id, используя jquery (чтобы я мог повторно использовать его позже в другом теге)? что-то вроде CSS:jquery get styles from id

div#myid{ 
width:100px; 
height:100px;} 

так что я могу позже сделать что-то вроде:.

for (var parts in $('#myid').css()) 
alert ('all parts of the style' + parts); 

ответ

2

$ ('#') MyId атр ('класс') возвращает строку из классов.

Вы должны быть в состоянии понять это здесь.

var classes = $('#myid').attr('class').split(' '); 
for(var c in classes) 
{ 
    alert(classes[c]); 
} 
+0

Одно небольшое изменение было бы бдительным (c); // Классы [c] будут вызывать ошибку – Raja

+0

Да, не уверен, что 'c' возвращался как int по какой-то причине ... – ctrlShiftBryan

0

Это не JQuery, но работает хорошо:

var style = window.getComputedStyle(document.getElementById('myid'), null); 
    alert(style.color); 

Вы можете заменить document.getElementById('myid') на $('#myid').get(0), если вы действительно хотите использовать JQuery здесь.

Это работает либо в стиле, заданном CSS, либо непосредственно применен к элементу со атрибутом style.

0

Не уверен. Я раньше пробовал attr ('class'), и он возвращался пустым. теперь пытается снова получить тот же результат (почти). Я полагаю, что attr ('class') в jquery не является точно таким же, как стили, определенные через id. попробуйте запустить это, дайте мне знать, если вы получите разные результаты:

<html> 
<script type="text/javascript" src="http://code.jquery.com/jquery-1.4.2.min.js"></script> 
<script type="text/javascript"> 
    $(document).ready(function(){ 
    alert($('#myid').attr('class')); // returns 'empty' 
    var classes = $('#myid').attr('class').split(' '); 
    for(var c in classes){ 
     alert(c); // returns 0 
    } 
    }); 
</script> 

<style> 
#myid { 
width:100px; 
height:100px; 
background:red; 
} 
</style> 

<body> 
<div id="myid"></div> 
</body> 

</html> 
+0

is window.getComputedStyle кросс-браузер совместим с любым шансом? :) – joe