2014-04-14 50 views
3

我該如何使用$(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"); 
     }); 
    } 
}); 
+0

你有什麼幾乎是這樣做的。 $(this)的事件處理程序被默認阻止。 –

+1

不要綁定調整內部大小,它會導致同一元素上的多個事件處理程序。做這樣的事情http://jsfiddle.net/2E8eH/3/ – Anton

+0

@Anton謝謝你,對不起之前沒有看到你的評論。那將是答案!甚至比Rory – caramba

回答

5

您需要檢查單擊處理程序中的窗口的寬度,而不是設置的窗口大小處理程序中的單擊處理程序。試試這個:

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

您當前的方法不會工作,因爲您最終將同一個點擊處理程序分配給同一元素多次。

+0

感謝@ Rory,解釋我在做什麼錯誤 – caramba

+0

@caramba沒問題,樂於幫忙。 –

2

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

您不能因爲.preventDefault()event屬性的功能。

但是,您可以檢查e.target.id爲您提供了元素,觸發事件的ID),看看,然後做一些相應

+0

還快,但在jsfiddle中,在調整窗口大小並點擊鏈接後,它會在「這裏」警告六次左右,爲什麼不只一次? – caramba

相關問題