2014-02-27 67 views
2

我使用引導的OnePage模板,我不能點擊鏈接,或不能切換單選按鈕,有人說我使用e.preventDefault()如何禁用e.preventDefault一些元素

打開此頁面http://abi.maxinrui.com/,您將在該頁面上單擊「單擊我」時看到我的意思。

我檢查js文件,有很多e.preventDefault(),我不知道如何修改它們。

有沒有辦法可以禁用e.preventDefault()?

我想在我的OnePage模板中有一些超鏈接到另一個網站,所以這裏是我的想法:我給一些特定的元素一個ID或類,然後我寫一些js,只禁用e.perventDefault()爲這些元素。

有人知道該怎麼做嗎?

謝謝!

+0

你能提供你的html嗎? –

+0

我不太確定這一點,但我相信你可以讓它返回false – KRUKUSA

+0

當然,你可以在http://abi.maxinrui看到html。com/ –

回答

1

如果你使用jQuery來處理你的事件,那麼這是可能的!

首先,小提琴(外殼爲全效):http://fiddle.jshell.net/UN5WE/show/
這裏的實際小提琴編輯:http://jsfiddle.net/UN5WE/

基本上,我們正在修改jQuery的事件對象,具體而言,preventDefault方法的原型發現。我們保留對重新啓用preventDefault的引用。

編輯
爲了您的具體使用情況,這裏是禁用的preventDefault方式(基於一類)。只是jQuery的加載後運行此腳本:

jQuery.Event.prototype.preventDefault = (function(){ 
    var originalFunc = jQuery.Event.prototype.preventDefault; 
    return function(){ 
     if($(this.target).hasClass('disableDefault')) {return;} 
     originalFunc.call(this); 
    } 
}()) 

之前要調用了preventDefault,這將檢查如果目標有disableDefault類。如果是,它立即返回(允許默認發生)。要測試您的頁面,請將該代碼複製到控制檯中,然後運行:$('h1').addClass('disableDefault')

0

我不認爲是可能的,或者至少不是一個簡單的方法,我能想到的是,如果使用綁定設置它們,您可以解除綁定處理程序的綁定,但這也會移除它們具有的任何行爲,但你可以用一種變通方法,添加一個新的事件處理程序的鏈接,我建議你添加一個特殊類的外部鏈接,然後從它那裏得到的href屬性並打開使用window.open這樣一個新的標籤:

http://jsfiddle.net/yV78E/2/

The html

<a href="http://api.jquery.com/?s=selector" class="externalLink" target="_blank">Hey</a> 

JS

// Similar behavior that might be on your site 

$('a').click(function(e){ 
    e.preventDefault(); 
    // some code 
}); 

// Use the code below as a workaround 

$('.externalLink').click(function(e){ 
    var targetLink = $(this).attr('href'); 
    window.open(targetLink, '_blank'); 
}); 

你只需要上面的腳本的第二部分,因爲第一個就是模仿你的問題。

+0

謝謝@Zarich它的工作原理! –