jQuery在IE8中不起作用?

3
我正在处理这个网站:mfm.treethink.net。在Firefox、Chrome和Safari中,所有的jquery都能正常工作,但在IE8中会出现错误,导致顶部横幅不起作用(使用了crossSlide jQuery插件),图片悬停时颜色也无法改变。

IE8告诉我源代码中第53、134和149行出现了错误,而这些行都是声明jquery函数的地方。

$(document).ready(function(){

我正在运行jQuery 1.4版本。奇怪的是,页面上另一个使用jQuery的部分正常工作,右侧的艺术家浏览/选择菜单。但横幅和图片滚动效果不起作用。

这里是我正在运行的所有脚本:

1:横幅 - 在IE8中不起作用

<script type="text/javascript">
  $(function() {
    $('#banner').crossSlide({
      sleep: 5,
      fade: 1
    }, [
      <?php
   $pages = get_posts('numberposts=2000&post_type=artist&post_status=publish');

   $i = 1;
   foreach( $pages as $page ) {
       $content = $page->post_title;
       if( empty($content) ) continue;

       $content = apply_filters('the_content', $content);

       ?>

       { src: '/wp-content/uploads/<?php echo $page->post_name ?>.jpg' },

<?php $i++;

   }    ?>
    ]);
  });

</script>

2 - 图片滚动 - 在IE8中无法工作

<script type="text/javascript">

$(function(){

    $("ul#artists li").hover(function() { /* On hover */

    var thumbOver = $(this).find("img").attr("src"); /* Find image source */

    /* Swap background */

    $(this).find("a.thumb").css({'background' : 'url(' + thumbOver + ') center bottom no-repeat'}); 
    $(this).find("span").stop().fadeTo('fast', 0 , function() {
        $(this).hide()
    }); 
    } , function() {
        $(this).find("span").stop().fadeTo('fast', 1).show();
    });

});

</script>

3 - 艺术家选择 - 在IE 8中工作

<script>
    $("#browse-select").change(function() {
    window.location.href = $(this).val();
});
    </script>

这些脚本是参考之前编写的脚本完成的,正如我所说,我对jQuery还很新。第二个在IE8中有效,而第一个则无效。我注意到第三个(唯一有效的)与前两个不同,没有在顶部声明函数。这可能会有什么影响吗?
非常感谢您提供的任何帮助。
谢谢, Wade

请显示出现的确切错误和行号。 - Pekka
作为第一个提示:$(function() {}); 是 $(document).ready( function() {}); 的快捷方式,因此函数的内容应在页面加载时进行评估。 你的第三个脚本是下拉选择框的事件处理程序,并在值更改时激活。 - Paul
消息:'plan[...].src' 为空或不是对象 行:59 字符:4 代码:0 URI:http://mfm.treethink.net/wp-content/themes/mfm/jquery.cross-slide.jsimg.src = plan[i].src; 是该行 - Wade D Ouellet
谢谢Paul,这有助于我更好地理解所写的内容,但我不确定如何正确地编写前两个? - Wade D Ouellet
1个回答

6

您没有发布实际的JavaScript代码,但是您发布的PHP可能会创建具有尾随逗号的对象:

{foo: 1, bar: 2,}

Internet Explorer不支持该功能。您需要生成类似于以下内容:

{foo: 1, bar: 2}

1
尾随逗号实际上没问题,但我认为你是对的。改变代码以使JSLint不再抱怨可以修复许多浏览器的怪异行为。 - Piskvor left the building
说实话,我不确定这是问题的原因,因为缩略图翻转也没能正常工作。我不明白,因为我在http://www.treethink.com上使用了同样的翻转代码,在IE8上运行良好,但在http://mfm.treethink.net上却无法工作。 - Wade D Ouellet
实际上,这可能是正确的。我删除了生成横幅的代码,然后rollovers就起作用了。这可能就是原因。我现在正在考虑修改那段php代码。 - Wade D Ouellet
1
你是100%正确的。我现在需要修改这个PHP,这样它就不会在最后一个上显示逗号了。 - Wade D Ouellet

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接