2011-11-14 9 views
2

ファンシーボックスを開いて新しいゲームを作成する前に、現在の状態を終了したいことを確認する必要があります。 How to stop event propagation with inline onclick attribute?ファンシーボックスを開く前に確認が必要

<a href="../Dialogs/CreateGameDialog.aspx" class="createGameLink showDialog" onclick=" if(!confirm('<%# Strings.LoggedIn_ComfirmStartNewGame %>')){ disabledEventPropagation(arguments[0]); return false;} return true;"> 
    <script type="text/javascript"> 
     function disabledEventPropagation(event) { 
      if (event.stopPropagation) { 
       event.stopPropagation(); 
      } 
      else if (window.event) { 
       window.event.cancelBubble = true; 
      } 
     } 
    </script> 

、確認結果に基づいて、/バインドfancyboxバインドを解除しようとした:

私はonClickイベントの伝播を停止しようとしている両方の Unbinding Fancybox on thumbnail fade

<a href="../Dialogs/CreateGameDialog.aspx" class="createGameLink showDialog" onclick=" if(!confirm('<%# Strings.LoggedIn_ComfirmStartNewGame %>')){ $('.createGameLink.showDialog').unbind('click.fb'); return false;} else{ bindCreateGameDialog(); return true;}"> 
<script type="text/javascript"> 
    $('.createGameLink.showDialog').setFancybox({ 'height': 400, 'width': 200 }); 
</script> 

setFancyboxは$.fn.fancyboxのラップで。

しかし、いずれのアプローチも機能しませんでした。

答えて

1

DOMのタグにfancyboxをバインドするのではなく、初期化するまで待つだけで、DOMにない要素に結びつけることができます。このようにするのははるかにクリーンです。

<a href="../Dialogs/CreateGameDialog.aspx" class="createGameLink showDialog" onclick=" if(confirm('<%# Strings.LoggedIn_ComfirmStartNewGame %>')){ openfancybox();} return false;"> 
    <script type="text/javascript"> 
     function openfancybox() { 
      var a = document.createElement('a'); 
      var jqA = $(a); 

      jqA.fancybox({ 
       'autoDimensions': false, 
       'width': '400', 
       'height': '200', 
       // more options here, including which url/element to open, etc... 
      }); 

      jqA.click(); 
     } 
    </script> 
+0

は、それが動作ありがとう..しかし、なぜそれが停止onClickイベントの伝播と動作しませんか? –

1

よりエレガントな方法があります:

<script type="text/javascript"> 
    $('.createGameLink.showDialog').setFancybox({ 
     'height': 400, 
     'width': 200, 
     'onStart': function(){if(!confirm('<%# Strings.LoggedIn_ComfirmStartNewGame %>')){return false;}} 
    }); 
</script> 
関連する問題