Return false对第二个onclick切换事件无效
Return false does not work on a second onclick toggle event
我有一个切换函数。当它第一次启动时,由于返回false,链接没有激活——这很好。
但在它被切换后,链接确实会启动!我不需要它。请帮忙吗?
function viewSHowHide() {
if (document.getElementById("viewSHowHide").innerHTML=="Hide Question") {
document.getElementById("viewSHowHide").innerHTML="View Question";
HideQ();
} else {
document.getElementById("viewSHowHide").innerHTML="Hide Question";
viewQ();
}
}
HTML
<a title="View Question" id="viewSHowHide" onclick="viewSHowHide(); return false" href="">View Question</a>
以下是您尝试做什么的工作示例http://jsfiddle.net/ericjbasti/fnd9C/
我把它切换到了<span>
,这样我就不必在默认情况下与链接想要做的事情作斗争,并稍微清理了一下代码。
HTML:
<span title="View Question" id="viewSHowHide" onclick="viewSHowHide();">View Question</span>
JavaScript:
viewSHowHide = function(){
var showHide=document.getElementById("viewSHowHide");
if (showHide.innerHTML=="Hide Question") {
showHide.innerHTML="View Question";
HideQ();
} else {
showHide.innerHTML="Hide Question";
viewQ();
}
}
尝试在中使用href="javascript:void(0)"
<a title="View Question" id="viewSHowHide" onclick="viewSHowHide(); return false" href="javascript:void(0)">View Question</a>
我认为。。。
您所需要的一切
if (event.preventDefault) { //check if browser supports preventDefault
event.preventDefault();
} else { //if no support -> IE lte 8
event.returnValue = false;
}
或简写:event.preventDefault?event.prventDefault():event.returnValue=false;
将其封装在一个函数中以更快地使用,例如:
<a href="#something" onclick="prevent();">click prevent</a>
<script>
prevent = function() { // in this case no need to pass 'event'
event.preventDefault ? event.preventDefault() : event.returnValue = false;
console.log('event prevented :)');
}
</script>
为什么所有现代浏览器都支持event.preventDefault,但IE从v9开始支持它对于较旧的IE版本(这就是jQuery使用的),您可以连接到事件的returnValue。
*jQuery参考代码
jQuery.Event.prototype = {
[...]
preventDefault: function() {
var e = this.originalEvent;
this.isDefaultPrevented = returnTrue;
if ( !e ) {
return;
}
// If preventDefault exists, run it on the original event
if ( e.preventDefault ) {
e.preventDefault();
// Support: IE
// Otherwise set the returnValue property of the original event to false
} else {
e.returnValue = false;
}
},
[...]
我希望我在这里没有犯任何错误;)祝你好运
相关文章:
- 分派点击事件并保留击键修饰符
- 模糊事件的Javascript测试
- keyup事件处理程序更改焦点不适用于快速键入
- 按键事件无效的原因
- 对象 Javascript 中的标签无效 - 想要添加事件列表器
- 为左键或右键单击附加事件侦听器-onclick'右键单击无效
- 为什么document.ready中的事件处理程序函数有效但无效;取出后不起作用
- 捕获事件或异常“无效表单控件”
- 尝试在状态“root.loaded.saved”中处理事件“成为无效”
- 在项视图中不会触发无效的模型事件
- onKeyUp事件(无效)
- Hammer.js:滑动事件对图像无效
- 为什么在使用事件冒泡时没有调用无效事件的事件侦听器
- Return false对第二个onclick切换事件无效
- 输入字段模糊时,验证字段,如果无效则取消模糊事件
- onblur事件不'如果用户在文本字段中输入值并直接按下浏览器刷新按钮,则无效
- 为什么jquery点击事件在plunker中有效,但在任何浏览器中都无效
- 如何处理从backbone.js中的collection.create()触发的多个无效事件
- Onhashchange事件导致无效的标记验证
- Firebase child_added事件返回无效路径错误