2011-09-02 49 views
1

這就是我想要做的事:試圖改變 '的margin-top' 屬性

$(function(){   
    $('div.item').css('margin-top',-(closest('img').height())/2+'px'); 
}); 

我希望我的'<div class="item"'> 得到style="margin-top:XXXXXX; top:50%" 其中'XXXXXX'等於(('div.item a img').height())/2

== ================================================== ==

編輯:(解決) 最終代碼爲那些誰有興趣:

<script type="text/javascript"> 

$(function(){ 
theWindow.resize(function() { 
$('div.item').each(function(i){   
    $(this).css('top',(($(window).height())/2)-(($(this).first('img').height())/2)+'px'); 
}); 
}).trigger("resize"); 
});  
</script> 

(我只用頂級屬性,而不是頂部+邊距) 感謝您的幫助

回答

2

我認爲這可能是你所需要的,特別是如果你有一個以上的div.item

$('div.item').each(function(){ 
    var r = $(this).find('img').first().height(); 
    $(this).css('margin-top', r/2 + 'px'); 
}); 

編輯

您需要.find()img,然後選擇.first()之一。

例子:http://jsfiddle.net/jasongennaro/JNMhC/3/

+0

我嘗試這樣做: '$( 'div.item')每個(。函數(){ var r = $(this).closest('img')。height(); $(this).css('margin-top',-r/2 +'px'); } );' 但在FF和Chrome上這不起作用。 – KouiK

+0

它是否需要'最接近'('img')'?你想要負利潤率嗎? –

+0

看到我已編輯的答案@KouiK –

0

從我可以告訴,你正在嘗試做這樣的事情:

$(function(){   
    $('div.item').css('margin-top',-($('div.item').closest('img').height())/2+'px'); 
}); 

但圖像選擇器取決於你的html配置。
如果你發佈一些html標記,maby我可以提供更好的解決方案。

+0

呵呵OO 這是工作在FF,但不能對鉻。 也許因爲我已經有div.item的監聽器了? – KouiK

+0

Thx幫助你們:-) 我發現了這個bug: Math.round(r/2 +'px')正在工作。 我刪除了negactive並取代了頂部:-50%,而不是頂部:50% 看來,Chrome的DOS不接受負值 – KouiK