【发布时间】:2018-06-26 22:48:18
【问题描述】:
单击正文中的任何元素时,我正在运行 Javascript Switch 语句。 因此,当找到匹配项时(在本例中,我定位一个按钮类并返回 false),break 关键字 应该停止执行并忽略所有其余代码。相反,当我点击按钮时,默认代码块仍然运行。它会触发我在默认代码块中设置的控制台消息,但它不应该。
为什么 return false 或 break 关键字不起作用?
当已有匹配项时,如何阻止默认代码块运行?
(打开控制台查看消息) 这是一个例子Jsfiddle
Javascript
$(document).on('click', function(event) {
var e = $( this );
var eClass = e.attr( 'class' );
switch( eClass ){
case 'btn-default':
return false;
break;
default:
var identifier = $( '.identifier' );
if (!$(event.target).find( $( identifier ) ).length ) {
console.log( 'Identical' );
}
}
});
HTML
<div class="row">
<div class="col visible" data-id="el_1">
Visible Content
</div>
<div class="col">
<button type="button" class="btn btn-default">
Click
</button>
</div>
</div>
<div class="identifier" id="el_1"></div>
【问题讨论】:
-
因为 return false 是在没有运行的情况下。对于您为什么要尝试从文档中获取属性值也很困惑。
-
我完全理解你的意思,但默认代码块应该只在没有找到匹配项的情况下运行。您感到困惑的元素是我实际上将它用作另一个代码的目标。
-
我认为你错了。添加 console.logs 或调试器语句以确认并包含有问题的控制台输出。您选择的答案似乎证实了我的怀疑。
标签: javascript jquery switch-statement