簡體   English   中英

如何禁用某些元素的e.preventDefault

[英]How to disable e.preventDefault for some elements

我正在使用引導程序的OnePage模板,我無法單擊鏈接,或者無法切換單選按鈕,有人說我正在使用e.preventDefault()

打開此頁面http://abi.maxinrui.com/ ,當您單擊該頁面上的“單擊我”時,您會明白我的意思。

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

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

我想在OnePage模板中有一些指向其他網站的超鏈接,所以我想這就是:我給某些特定元素一個ID或類,然后編寫一些js,僅對這些元素禁用e.perventDefault()。

有人知道該怎么做嗎?

謝謝!

如果您使用jQuery處理事件,則有可能!

首先,擺弄小提琴(充分發揮作用的貝殼): http : //fiddle.jshell.net/UN5WE/show/
這是要編輯的實際小提琴: http : //jsfiddle.net/UN5WE/

基本上,我們正在修改jQuery的Event對象,尤其是在原型上找到的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')

我認為這是不可能的,或者至少不是以我能想到的簡單方式,如果使用綁定設置了處理程序,則可以取消綁定處理程序,但是這也會刪除它們具有的任何行為,但是您可以使用解決方法,為鏈接添加一個新的事件處理程序,我建議您向外部錨點添加一個特殊的類,然后從中獲取href屬性,並使用window.open打開一個新選項卡,如下所示:

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

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');
});

您只需要上面腳本的第二部分,因為第一部分只是為了模擬您的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM