2011-10-16 42 views
2

我有一個jQuery像這樣:。每個()方法只適用於第一元件在IE

$('#corner .photo img').each(function() { 
    var $img = $(this); 
    var h = $img.height(); 
    var w = $img.width(); 
    $img.css('margin-top', +h/-2 + "px").css('margin-left',+ w/ -2 + "px"); 
}); 

它可以在所有的瀏覽器除了在IE 7和8在這些瀏覽器,它僅應用於新屬性到#corner的第一個元素(這是第一個.photo圖片)。

如果我刪除#corner,它適用於其中的所有「.photo img」實例。但是,我無法刪除id #corner,因爲HTML的其他部分使用「.photo img」,我不希望將此jQuery腳本應用於所有。我只希望它被應用在#corner裏面。

有沒有辦法解決這個問題?

編輯:

我的壞,顯然有與多個同名的div在文件中,這是導致IE的問題。我將它們改爲課程,現在可以使用。

+5

你可以包含你的HTML。這可能是問題所在。 – JohnFx

+2

也許你的HTML不正確,IE比其他瀏覽器更正它,結果是'#corner'內只有一個圖像。很難說這個代碼有什麼問題。 jQuery肯定也適用於IE。也許你可以創建一個http://jsfiddle.net/演示。 –

+1

嘗試'alert($('#corner .photo img')。length)'告訴我們IE中的輸出是什麼? – Rifat

回答

0

您可以嘗試

$('#corner').find('.photo img').each(... 

順便說一句,IE不喜歡用相同的ID多個項目。如果您以這種方式使用多個id="corner"項目,它們會將其更改爲類,並且您應該沒問題。

+0

我已經試過了。仍然不起作用。 – catandmouse

+1

有什麼區別?你能解釋一下嗎? – Rifat

+0

剛剛更新了另一個想法。就你從這些方法中得到的東西而言,沒有什麼區別,但你永遠不會知道每個瀏覽器內有什麼怪癖,所以如果應該工作的東西沒有,它值得嘗試多種方式。 – methodin

相關問題