2012-01-26 33 views
0

クリックオブザーバでPrototypeJSのe.stop()関数を使用しています。これはいくつかのチェックを行い、いくつかの条件を満たす場合はリンクを動作させたい他のすべての要素が発射されるのを止めてください。例えばPrototypeJSのリンク動作が正常に終了した場合

<script type="text/javascript"> 
document.observe('dom:loaded',function(){ 
    if ($$('a') != undefined) { 
     $$('a').invoke('observe','click', function(e) {  
     if (SOME CONDITION){ 
      //NORMAL LINK FUNCTIONALITY 
      //STOP PARENT 
    } else { 
      e.stop(); 
      //CALL FUNCTION 
     } 
     }); 
    } 
    if ($$('.parent') != undefined) { 
     $$('.parent').invoke('observe','click', function(e) {  
     alert('test'); 
     }); 
    } 
}); 
</script> 
<div class="parent"> 
    <a href="javascript:popUp('test.html')">Test 1</a> 
    <a href="test.html">Test 2</a> 
    <a href="test.html" target="_blank">Test 3</a> 
</div> 

何が起こることはすべてのリンクのクリック時に親火災です。 e.stop()はそれを止めますが、通常のリンク動作も停止します。リンクが正常に処理されるように指示する方法はありますか?

答えて

1

イベントをキャッチするときは、通常、「trueを返す」必要があります。正常な動作をする。

+0

問題は、親オブザーバを停止する必要があることです。 – fanfavorite

+0

イベントを停止し、SOME_CONDITIONの場合はtrue、そうでない場合はfalseを返します。 – dievardump

+0

残念ながらそれは動作しません。 trueを返すかどうかにかかわらず、リンクを完全に停止します。 – fanfavorite

関連する問題