event.preventdefault无法在Firefox中运行

时间:2013-12-13 12:54:11

标签: jquery firefox toggle preventdefault

我使用下面的jQuery来切换隐藏的div。除了Firefox之外我都在工作,我知道错误是(ReferenceError:事件没有定义)但是我不确定在哪里定义事件所以如果有人能够提供帮助那就太好了。提前谢谢!

每个按钮都写为:

<div class="btn_view"><a href="#" onclick="toggle_visibility('all-avon',this);">VIEW TYRES</a></div>

jQuery的:

function toggle_visibility (id,el) {
    $('.btn_view a').html('VIEW PRODUCTS’);
    event.preventDefault();
    $('.price-text').show();
    $('.model-price-sm').show();
    var e = document.getElementById(id);
    if (e.style.display == 'block') 
    {
        e.style.display = 'none';
        $(el).html('VIEW ALL');
    }
    else 
    {
        e.style.display = 'block';
        $(el).html('HIDE PRODUCTS’);
        $(el).parent().parent().find('.price-text').hide();
        $(el).parent().parent().find('.model-price-sm').hide();
        //$(el).parent().prev('.price-text').hide();
    }

    hideAllBut(id);
}

function hideAllBut(id) {
    var lists = document.querySelectorAll('.reveal');
    for (var i = lists.length; i--; ) {
        if (lists[i].id != id) {
            lists[i].style.display = 'none';
        }
    }
}

3 个答案:

答案 0 :(得分:4)

在FireFox中,您可以将事件对象作为参数传递,例如:

<div class="btn_view"><a href="#" onclick="toggle_visibility('all-avon',this, event);">VIEW TYRES</a></div>

function toggle_visibility (id,el, e)(然后使用e.preventDefault,将其与IE等中的window.event分开)

虽然,当你使用jQuery时,我建议做上面/下面提到的Sergio。

答案 1 :(得分:3)

而不是使用&#34; event.preventDefault()&#34;你可以使用&#34; return false&#34;。它可能会在Firefox中解决您的问题。

干杯

答案 2 :(得分:2)

你有一个错字:

.html('VIEW PRODUCTS’); 
                    ^

此处也是错误.html('HIDE PRODUCTS’);

除此之外,最好避免使用内联脚本,因此您可以使用:

$('.btn_view a').click(function(event){
    event.preventDefault();
    toggle_visibility (id,el)
});