我正在使用OnePage模板的bootstrap,我无法点击链接,或者无法切换单选按钮,有人说我正在使用e.preventDefault()
打开此页面http://abi.maxinrui.com/,当您点击该页面上的“点击我”时,您会看到我的意思。
我检查了js文件,有很多e.preventDefault(),我不知道如何修改它们。
有没有办法禁用e.preventDefault()?
我希望在我的OnePage模板中有一些超链接到另一个网站,所以这就是我的想法:我给一些特定元素一个ID或类,然后我写一些js,禁用e.perventDefault()仅用于这些元素。
有人知道怎么做吗?
谢谢!
答案 0 :(得分:2)
如果你正在使用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')
。
答案 1 :(得分:1)
我认为不可能,或者至少不是我能想到的简单方法,如果使用bind设置它们,你可以取消绑定处理程序,但这也会删除它们的任何行为,但是你可以使用变通方法,为链接添加新的事件处理程序,我建议您向外部锚点添加一个特殊类,然后从中获取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');
});
您只需要上面脚本的第二部分,因为第一部分只是为了模拟您的问题。