如何在$(window).resize()中的$(this)上使用e.preventDefault()?

时间:2014-04-14 09:19:41

标签: javascript jquery html css

我该如何使用$(this).e.preventDefault()

我想要/需要的是窗口调整大小<a>应该有不同的行为。因此,如果小提示示例中窗口宽度小于710,则不应触发href。只有一些JavaScript函数可以切换subnav。但是如果窗口宽于710px,我希望href能够“正常”工作。

现在设置示例我已经看到事件多次触发。如果只发射一次怎么办呢?

此外,有没有更好的方法来实现我想要的目标?

点击之前请在jsfiddle中调整窗口大小! fiddle here

$( window ).resize(function() {
    var wW = $(window).width();
    $('.windowWidth span').html(wW);
    if(wW < 710) {
        $('nav ul.nav > li > a').on('click',function(e){
            e.preventDefault();
            alert("here");
        });
    } else {
        $('nav ul.nav > li > a').on('click',function(e){
            alert("there");
        });
    }
});

2 个答案:

答案 0 :(得分:5)

您需要检查单击处理程序中的窗口宽度,而不是在窗口大小调整处理程序中设置单击处理程序。试试这个:

$('nav ul.nav > li > a').on('click',function(e){
    if ($(window).width() < 710) {
        e.preventDefault();
    }
    alert("there");
});

您当前的方法无效,因为您最终会多次将相同的点击处理程序分配给同一个元素。

答案 1 :(得分:2)

  

我如何使用$(this).e.preventDefault()?

你不能因为.preventDefault()event属性的函数。

但是,您可以检查e.target.id为您提供触发事件的元素ID)并查看相应的内容