.each()方法仅适用于IE中的第一个元素

我有一个像这样的jQuery:

$('#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 img)。

如果我删除#corner,它将适用于其中的所有“.photo img”实例。 但是,我无法删除id #corner,因为HTML的其他部分正在使用“.photo img”,我不希望将这个jQuery脚本应用于所有。 我只希望它在#corner中应用。

有办法解决这个问题吗?

编辑:

我的不好,显然文档中有多个具有相同名称的div,这导致了IE中的问题。 我把它们改成了类,现在可以了。

你可以试试

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

顺便说一句,IE不喜欢具有相同ID的多个项目。 如果您使用这种方式使用多个id="corner"项目,他们会将其更改为一个类,您应该没问题。