event.preventdefault 在Firefox中无效

4
我正在使用以下jQuery代码来切换隐藏的div。在除Firefox之外的所有浏览器中都可以工作,我知道错误是(ReferenceError:event未定义),但我不确定在哪里定义事件,如果有人能够帮助,那将是很棒的。提前感谢!

每个按钮都编写为:

<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个回答

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上/下面提到的做法。

感谢您的输入,@Benno。 - fsylothian
https://dev59.com/XmQn5IYBdhLWcg3w_LXx - WaiKit Kung

3

你可以使用"return false"代替"event.preventDefault()"。在Firefox中,这样做可能会解决你的问题。

祝好


2

您打错了字:

.html('VIEW PRODUCTS’); 
                    ^

此外,这里也有一个拼写错误:.html('HIDE PRODUCTS’);

除此之外,最好避免使用内联脚本,可以使用以下代码:

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

谢谢您的快速回复。我需要每个按钮打开一个不同的隐藏div,所以不确定这是否可行? - fsylothian
@fsylothian,你能发一下你整个的HTML代码吗? - Sergio
@fsylothian,您可以随时向锚点添加数据属性,例如data-target-id="targetId"。然后在上面的click函数中,您将执行toggle_visibility($(this).attr('data-target-id'), this)。 - darkrat

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