他们似乎在做同样的事情......一个是现代的还是一个旧的?或者它们是否受不同浏览器的支持?
当我自己处理事件(没有框架)时,我总是检查两者并执行两者(如果存在).(我也是return false
,但我觉得这与附加的事件无关node.addEventListener
).
那两个为什么呢?我应该继续检查两者吗?或者实际上有区别吗?
(我知道,很多问题,但它们都是一样的=))
假设我有一个锚标记,例如
<a href="#" ng-click="do()">Click</a>
Run Code Online (Sandbox Code Playgroud)
如何防止浏览器导航到AngularJS中的#?
以下是我的JavaScript(mootools)代码:
$('orderNowForm').addEvent('submit', function (event) {
event.preventDefault();
allFilled = false;
$$(".required").each(function (inp) {
if (inp.getValue() != '') {
allFilled = true;
}
});
if (!allFilled) {
$$(".errormsg").setStyle('display', '');
return;
} else {
$$('.defaultText').each(function (input) {
if (input.getValue() == input.getAttribute('title')) {
input.setAttribute('value', '');
}
});
}
this.send({
onSuccess: function () {
$('page_1_table').setStyle('display', 'none');
$('page_2_table').setStyle('display', 'none');
$('page_3_table').setStyle('display', '');
}
});
});
Run Code Online (Sandbox Code Playgroud)
在IE以外的所有浏览器中,这都可以.但在IE中,这会导致错误.我有IE8所以在使用它的JavaScript调试器时,我发现该event
对象没有preventDefault
导致错误的方法,因此表单已经提交.在Firefox(我发现使用Firebug)的情况下支持该方法.
任何帮助?
一旦我解雇了evt.preventDefault()
,我怎么能再次恢复默认操作?
jquery切换默认调用preventDefault(),因此默认值不起作用.你不能点击一个复选框,你不能点击链接等
是否可以恢复默认处理程序?
这有什么问题?
HTML:
<form action="http://localhost:8888/bevbros/index.php/test" method="post" accept-charset="utf-8" id="cpa-form" class="forms">
<input type="text" name="zip" value="Zip code" id="Zip" class="required valid">
<input type="submit" name="Next" value="Submit" class="forms" id="1">
</form>
Run Code Online (Sandbox Code Playgroud)
jQuery的:
$("#cpa-form").submit(function(e){
e.preventDefault();
});
Run Code Online (Sandbox Code Playgroud) 这是我简单的导航栏:
<div class="navbar navbar-fixed-top myfont" role="navigation">
<div class="">
<ul class="nav navbar-nav navbar-left">
<li>
<a class="navbar-brand" href="#">
<img src="assets/img/logo.png"/>
</a>
</li>
<li>
<button class="btn btn-navbar">
<i class="fa fa-edit"></i>
Create
</button>
</li>
</ul>
</div>
<ul class="nav navbar-nav navbar-right">
<li data-match-route="/"><a href="#/page-one">Login</a></li>
<li data-match-route="/"><a href="#/page-two/sub-a">Signup</a></li>
</ul>
</div>
Run Code Online (Sandbox Code Playgroud)
我只是想防止这种崩溃,因为我不需要它,该怎么办?
我想避免编写300K行的CSS来覆盖默认样式.
有什么建议吗?
我想知道是否event.preventDefault()
和return false
是一样的.
我做了一些测试,似乎
例如,如果使用旧模型添加事件处理程序
elem.onclick = function(){
return false;
};
Run Code Online (Sandbox Code Playgroud)
然后,return false
防止默认操作,如event.preventDefault()
.
如果事件处理程序使用添加addEventListener
,例如
elem.addEventListener(
'click',
function(e){
return false;
},
false
);
Run Code Online (Sandbox Code Playgroud)
然后,return false
不会阻止默认操作.
所有浏览器的行为都是这样的吗?
event.preventDefault()
和之间有更多的区别return false
吗?
我在哪里可以找到一些文档(我不能在MDN中)关于在某些情况下的return false
行为event.preventDefault()
?
我的问题只是简单的javascript,而不是jQuery,所以请不要将它标记为event.preventDefault()与return false的重复,即使两个问题的标题几乎相同.
我正在渲染一个带有反应的链接:
render: ->
`<a className="upvotes" onClick={this.upvote}>upvote</a>`
Run Code Online (Sandbox Code Playgroud)
然后,上面我有upvote函数:
upvote: ->
// do stuff (ajax)
Run Code Online (Sandbox Code Playgroud)
在链接之前我已经跨越那个地方,但我需要切换到链接,这就是麻烦 - 每次点击.upvotes
页面都会刷新,到目前为止我尝试过:
event.preventDefault() - 无法正常工作.
upvote: (e) ->
e.preventDefault()
// do stuff (ajax)
Run Code Online (Sandbox Code Playgroud)
event.stopPropagation() - 不工作.
upvote: (e) ->
e.stopPropagation()
// do stuff (ajax)
Run Code Online (Sandbox Code Playgroud)
返回false - 不工作.
upvote: (e) ->
// do stuff (ajax)
return false
Run Code Online (Sandbox Code Playgroud)
我也在我的index.html中使用jQuery尝试了以上所有内容,但似乎没有任何效果.我该怎么做,我做错了什么?我已经检查了event.type,click
所以我想我应该能够以某种方式避免重定向?
对不起,对于React来说,我是新手.
谢谢!
首先,在JavaScript的事件模型中,您会遇到一个名为事件冒泡的概念(它使事件从子元素传播到父元素).为了避免这种冒泡效应,许多开发人员使用一种名为的事件方法stopPropagation( )
.或者,开发人员已开始使用
return false
语句来阻止此类传播.现在,有一个名为的术语
preventDefault( )
.如名称所示,此方法可防止触发元素的任何默认行为.最佳用例是防止锚标记打开链接.
您可能会遇到一种情况,您希望阻止锚标记打开链接(默认行为)以及阻止事件上升到父级.在这种情况下,你可以用单行来完成它,而不是写两行代码.return false
preventdefault ×10
javascript ×6
events ×4
jquery ×3
angularjs ×1
coffeescript ×1
collapse ×1
css ×1
dom-events ×1
hyperlink ×1
mootools ×1
navbar ×1
reactjs ×1