【发布时间】:2014-09-29 14:29:51
【问题描述】:
这是我的 html 块
<tr>
<td class="c_menu" id="bat_light">
<a href="someLink/file.html#" onclick="OpenItem('light');return false;">sometitle</a>
</td>
<td class="c_menu" id="bat_econom">
<a href="someLink/file.html#" onclick="OpenItem('econom');return false;">
sometitle</a>
</td>
<td class="c_menu" id="bat_standart">
<a href="someLink/file.html#" onclick="OpenItem('standart');return false;">
sometitle</a>
</td>
<td class="c_menu" id="bat_premium">
<a href="someLink/file.html#" onclick="OpenItem('premium');return false;">
sometitle</a>
</td>
</tr>
这是顶部的 JavaScript 介绍
function OpenItem(name){
var blocks = ['light', 'econom', 'standart', 'premium'];
for(var i = 0; i < blocks.length; i++){
if (blocks[i] == name){
document.getElementById('bat_'+blocks[i]).className="c_menu active";
document.getElementById('descr_'+blocks[i]).style.display="block";
document.getElementById('tab_'+blocks[i]).style.display="block";
}
else{
document.getElementById('bat_'+blocks[i]).className="c_menu";
document.getElementById('descr_'+blocks[i]).style.display="none";
document.getElementById('tab_'+blocks[i]).style.display="none";
}
}
}
我了解如何在 JQuery 中修复页面默认顶部滚动,但在这种情况下对简单的 JS 无能为力。将代码重写为 JQuery 是不可接受的。尝试将“this”设置为函数的第二个参数,然后 event.preventDefault() - 不起作用。
【问题讨论】:
-
return false应该涵盖这一点。检查你的控制台,看看 JS 中是否有任何其他错误可能导致它在结束之前失败。 -
分离出来似乎可行。必须有一个事件附加到父元素,或者正如汤姆所说,一个导致脚本失败的错误。 codepen.io/anon/pen/fxjbg
标签: javascript html stoppropagation