Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript .each()方法仅适用于IE中的第一个元素_Javascript_Jquery_Methods - Fatal编程技术网

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

Javascript .each()方法仅适用于IE中的第一个元素,javascript,jquery,methods,Javascript,Jquery,Methods,我有这样一个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"); }); 它适用于除IE7和IE8之外的所有浏览器。在这些浏览器中,它只将新属

我有这样一个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");
});
它适用于除IE7和IE8之外的所有浏览器。在这些浏览器中,它只将新属性应用于#corner的第一个元素(即第一个.photo img)

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

有办法解决这个问题吗

编辑:

我的错,显然文档中有多个同名的div,这导致了IE中的问题。我将它们改为类,现在它可以工作了。

您可以试试

$('#corner').find('.photo img').each(...
顺便说一下,IE不喜欢具有相同ID的多个项目。如果您以这种方式使用多个
ID=“corner”
项目,它们会将其更改为一个类,您应该可以尝试

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

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

有什么区别?你能解释一下吗?刚刚更新了另一个想法。从这些方法中你会得到什么,没有区别,但你永远不知道每个浏览器中都有什么怪癖,所以如果一些本应该有效的东西不起作用,那么就值得尝试多种方法。区别是什么?你能解释一下吗?刚刚更新了另一个想法。从这些方法中你会得到什么,没有区别,但你永远不知道每个浏览器中都有什么怪癖,所以如果一些本应该有效的东西不起作用,那么就值得尝试多种方法。你能包括你的HTML吗。这可能就是问题所在。可能是您的HTML不正确,IE的更正方式与其他浏览器不同,结果是
#corner
中只有一个图像。考虑到这段代码,很难判断出什么是错误的。jQuery肯定也适用于IE。也许你可以创建一个演示。试试
警报($('#corner.photo img').length)
并告诉我们IE中的输出是什么?我怀疑jQuery很好,CSS没有正确解析。。添加
警报($img)或循环中类似的内容,并查看您收到警报框的次数。您都是正确的。HTML有一个问题。现在修好了。谢谢。你能包括你的HTML吗。这可能就是问题所在。可能是您的HTML不正确,IE的更正方式与其他浏览器不同,结果是
#corner
中只有一个图像。考虑到这段代码,很难判断出什么是错误的。jQuery肯定也适用于IE。也许你可以创建一个演示。试试
警报($('#corner.photo img').length)
并告诉我们IE中的输出是什么?我怀疑jQuery很好,CSS没有正确解析。。添加
警报($img)或循环中类似的内容,并查看您收到警报框的次数。您都是正确的。HTML有一个问题。现在修好了。谢谢