我有一个切换函数。当它第一次启动时,由于返回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;
}
},
[...]
我希望我在这里没有犯任何错误;)祝你好运