e.preventDefault无法在firefox中运行

时间:2013-11-26 22:41:36

标签: javascript jquery

我是新手,目前有一个问题,下面的代码不适用于Firefox。

我正在尝试使用e.preventDefault()来阻止锚定默认值。我也尝试了return false,但似乎仍然默认了锚位置。

有什么想法吗?这是我的代码:

<script type="text/javascript">
...
    // tabs  
    $('ul.tabNav').each(function(){
    var $active, $content, $links = $(this).find('a');
    $active = $links.first().addClass('active');
    $content = $($active.attr('href'));
    $links.not(':first').each(function () {
        $($(this).attr('href')).hide();
    });

    $(this).on('click', 'a', function(e){
        // Make the old tab inactive.
        $active.removeClass('active');
        $content.hide();

        // Update the variables with the new link and content
        $active = $(this);
        $content = $($(this).attr('href'));

        // Make the tab active.
        $active.addClass('active');
        $content.show();    

        // Prevent the anchor's default click action
    e.preventDefault(); 
    });
});
});
</script>

1 个答案:

答案 0 :(得分:1)

我会先放e.preventDefault();所以无论如何都会调用它。

没有看到你的标记,我无法确定,但我的猜测是$($(this).attr('href'));抛出了一个错误,停止了执行,因此永远不会进入e.preventDefault();

$(this).on('click', 'a', function (e)
{
    // Prevent the anchor's default click action
    e.preventDefault(); 

    // Make the old tab inactive.
    $active.removeClass('active');
    $content.hide();

    // Update the variables with the new link and content
    $active = $(this);
    $content = $($(this).attr('href')); // <-- is probably erroring here.

    // Make the tab active.
    $active.addClass('active');
    $content.show();    
});