Prototype停止在dom中执行语句:如果遇到null对象,则加载

时间:2011-04-20 20:09:31

标签: jquery prototypejs

在我看来,如果遇到null对象,Prototype会停止执行包含在dom:loaded事件中的语句。例如:

 <script type="text/javascript">
    document.observe("dom:loaded", function() {
       //id below does not exist in the DOM
       $('invalid_id').observe('click',function(e){Event.stop(e);//do something});
       //alert box will not execute.
       alert('do something');
    });
 </script>

会在IE中引发错误,而其他浏览器(Chrome,FF等)会默默地忽略错误,但错误下方的任何行都不会被执行。

JQuery似乎没有这种行为。例如:

 <script type="text/javascript">
    $(document).ready(function(){
       $("#invalid_id").click(function(event){
          //click event code here...
       });
       alert('do something');
    });
 </script>

...即使遇到空对象,也会继续执行行。

我一直无法在Prototype的网站上找到关于这个问题的任何内容,而JQuery确实解决了这个问题。有没有其他人经历过这个或者我错过了什么?

感谢。

1 个答案:

答案 0 :(得分:0)

如果标识为$('invalid_id').observe(...的元素不存在,

invalid_id会抛出错误。

如果你想以jquery的工作方式(无论是否存在invalid_id,它将工作的方式)使用:

$$('#invalid_id').invoke('observe','click',function(e){...});

这样你的dom加载函数的其余部分就会执行。