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

.each() method only applies to first element in IE

本文关键字:第一个 元素 IE 适用于 方法 each      更新时间:2023-09-26

我有一个像这样的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,它适用于所有的实例"。在里面拍照。但是,我无法删除id #角,因为HTML的其他部分正在使用"。我不希望这个jQuery脚本应用到所有。我只想把它应用在#corner内。

有办法解决这个问题吗?

编辑:

我的坏,显然有多个div与相同的名称在文档中,这是导致IE的问题。

你可以试试

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

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