这是发生了什么的非常简化的例子
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个结果。
但是有一个错误:在最后一个元素上它没有执行-so,我这样做是为了在页面加载后重新运行最后一个项目上的函数:
jQuery(document).ready(function(){
jQuery(".resultAction:last").each(makeItso);
});
所以,长话短说这很好用,在Firefox,IE 7,8,9中 - 尽管HERE是有趣的部分:我使用Mac和VMware Fusion测试过,我觉得“我觉得”我很好,测试人员使用他们的PC和IE 8 --Epic失败。
我倾向于:虚拟机上的#1测试与真实交易不同。另外我的问题是为什么这个崩溃在IE 8中,否则在9和Fox中运行良好?我编码严重吗?
答案 0 :(得分:1)
看起来每个id="indicator"
内都有.resultAction
的元素。每个ID在页面上应该是唯一的。某些浏览器可能不关心此限制。其他人可能。
将id="indicator"
更改为class="indicator"
,这可能会有所帮助。
至于你的另一个问题,即它没有在最后一行执行,只要确保脚本在HTML中的后期出现而不是它操作的元素,就不需要等待document.ready。 。即将<script>
标记放在正文之前的最后一个标记处。如果你这样做并且它不起作用,我们肯定需要看到完整的HTML。