preventDefault()不能处理IE中的某些代码

时间:2011-10-28 09:59:49

标签: javascript jquery preventdefault

我的网站上有一些JS应该阻止以下代码重新加载页面(因为我使用AJAX来刷新部分内容),但在IE中它总是重新加载页面。其他浏览器都没问题。

JS,作为另一个线程中的givein -

$('#attachment-body').delegate("a", "click", function(e){
    e.preventDefault();
});

仍在重新加载页面的链接(位于#attachment-body容器内) -

<div id="image-navigation">
    <div id="nav-previous" class="nav-previous attachment-nav-previous float-left">
        <p><a id="previous-link" href="<?php echo get_permalink($attachments[$previous_position]->ID); ?>" title="<?php echo esc_attr(get_the_title($attachments[$previous_position]->post_title)); ?>" onclick="set_centre_image(<?php echo $attachments[$previous_position]->ID; ?>, <?php echo $previous_position; ?>)">&laquo; Previous Image</a></p>
    </div>
    <div id="nav-next" class="nav-next attachment-nav-next float-right">
        <p><a id="next-link" href="<?php echo get_permalink($attachments[$next_position]->ID); ?>" title="<?php echo esc_attr(get_the_title($attachments[$next_position]->post_title)); ?>" onclick="set_centre_image(<?php echo $attachments[$next_position]->ID; ?>, <?php echo $next_position; ?>)">Next Image &raquo;</a></p>
    </div>
</div>

渲染时,这是上面生成的代码块 -

<div id="image-navigation">
    <div id="nav-previous" class="nav-previous attachment-nav-previous float-left">
        <p><a id="previous-link" href="http://mydomain.com/firm-news/summer-drinks-at-the-castle/summer-drinks-2011-6/" title="" onclick="set_centre_image(5144, 5)">&laquo; Previous Image</a></p>
    </div>
    <div id="nav-next" class="nav-next attachment-nav-next float-right">
        <p><a id="next-link" href="http://mydomain.com/firm-news/summer-drinks-at-the-castle/summer-drinks-2011-8/" title="" onclick="set_centre_image(5146, 7)">Next Image &raquo;</a></p>
    </div>
</div>

preventDefault()在IE中工作,因为我在网站的其他区域使用它,所以我只能认为我的代码中的某些内容不对。

感谢。

1 个答案:

答案 0 :(得分:0)

我想我现在已经解决了这个问题......

当点击我的图库中的下一个/上一个链接时,它会触发一个JS函数(使用onClick()),该函数首先清除了我运行preventDefault() agianst的div。而不是那样,我把它隐藏起来,它现在有效。

我不是专家,但在它触发内联指定的函数(意味着.delegate()后,它看起来像.live()click()#attachment-body方法的IE测试在它正在检查的时候不存在),其他浏览器反过来这样做。