0

这是发生的事情的一个非常简化的示例

jQuery(".resultAction").each(makeItso);

function makeItso() {
    //code executes (it was a conditional to test for a file extension and display apply a class)
    //the short version:
    jQuery(this).find("#indicator").addClass("is" + fileExtension.slice(1));

    //no file extension hide the icon div "indicator"
    if ((fileExtension.indexOf('.') == -1)) {
        jQuery(this).find("#indicator").addClass("not");
    }

}

现在,这运行得很好,并且比 .ready() 运行得更快——因为我每页大约有 100 个结果。

但是有一个错误:在最后一个元素上它没有执行 - 所以,我这样做是为了在页面加载后重新运行最后一个项目上的函数:

jQuery(document).ready(function(){
    jQuery(".resultAction:last").each(makeItso);
});

因此,长话短说,这在 Firefox、IE 7、8、9 中运行良好——尽管这里是有趣的部分:我使用 Mac 和 VMware Fusion 进行了测试,所以我“认为”我没问题,测试人员使用他们的 PC 和 IE 8 --Epic 失败。

我倾向于一些东西:在虚拟机上进行的#1 测试与真正的交易不同。另外我的问题是为什么这会在 IE 8 中崩溃,而在 9 和 Fox 中运行良好?我编码不好?

4

1 回答 1

1

看起来你有一个id="indicator"里面的元素 every .resultAction。每个 ID 在页面上应该是唯一的。一些浏览器可能不关心这个限制。其他人可能。

改变现状,它id="indicator"可能class="indicator"会有所帮助。

至于你的另一个问题,它没有在最后一行执行,你不需要等待 document.ready 只要你确保脚本在 HTML 中比它正在操作的元素更晚。即把<script>标签放在正文之前的最后一件事。如果您这样做但它不起作用,我们肯定需要查看完整的 html。

于 2012-11-26T23:14:37.217 回答