[英]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
打開一個新選項卡,如下所示:
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.