不确定说出问题的最佳方式,但假设您正在使用jQuery来设置各种类似的东西:
<script>
function doSecond(){
alert("Hi");
}
function dofirst(){
var x = asdasd;
}
$(dofirst);
$(doSecond);
</script>
所以,想象一下dofirst和dosecond是完全独立的.如果dofirst抛出一个异常,当然它会发生异常,那么doSecond永远不会触发.我理解为什么会发生这种情况,但我想知道是否有办法解决这个问题,而不必包装我想在try catch中设置的每种jQuery处理程序.例如,我宁愿不这样做:
try{
$(doFirst);
}
catch{
//maybe log here?
}
try{
$(doSecond);
}
catch{
//maybe log here?
}
现在,如果你想知道我为什么要这样做?好吧,以你现在正在查看的页面上的代码为例:
<script type="text/javascript">
$(function() {
$('#title').focus(function() { $('#how-to-tag').hide(); $('#how-to-format').hide(); $('#how-to-title').fadeIn('slow'); });
$('#wmd-input').focus(function() { $('#how-to-tag').hide(); $('#how-to-format').fadeIn('slow'); $('#how-to-title').hide(); });
$('#tagnames').focus(function() { $('#how-to-tag').fadeIn('slow'); $('#how-to-format').hide(); $('#how-to-title').hide(); });
});
</script>
当你点击它们时,是否真的有必要让某些dom元素淡出?不.但是如果你在那个函数中犯了错误,那么很可能你真正需要运行的其他javascript可能永远不会得到设置.
最佳答案 确保事物彼此独立运行的几种方法:
>正如你所说,尝试/捕捉每个
>在setTimeout(或.)中调用每个
无论jQuery语法糖
是为了那个)
>分成不同的< script>
块