javascript
  • jquery
  • 2012-01-26 19 views 1 likes 
    1

    私はこれをしばらくやっていて、数多くの方法を試しています。それはまだ働いていない。コールバック関数をonclickイベントに渡します。

    function popupConfirm(widtH, texT, callback){ 
    var top=(window.innerHeight/2) - 100; 
    var left=(window.innerWidth/2) - (widtH/2); 
    var r="<div id='standard-modal' style='width:"+widtH+"px;top:"+top+"px;left:"+left+"px;'>"; 
         r+="<div id='standard-modal-header' style='width:"+(widtH-4)+"px;'>"; 
         r+="<strong>&rarr; &nbsp; Icon Box &nbsp; &larr;</strong>"; 
         r+="</div>"; 
         r+="<div id='standard-modal-message' style='width:"+(widtH-30)+"px;'>"+texT+"</div>"; 
          r+="<div id='button_wrapper'><div id='standard-modal-button' class='left_button' onclick='$(\"#standard-modal\").remove();' >CANCEL</div>"; 
    
          // following line attaches callback to onclick event   
          r+="<div id='standard-modal-button' class='right_button' onclick='callback();' >CONFRIM</div></div>"; 
         r+="<div style='clear:both;'></div></div>"; 
    
    $('body').append(r); 
    } 
    
    
    popupConfirm(300,'blah blah' , function(){alert("finally");});  
    

    理論では、ユーザーがポップアップで確認をクリックすると警告が表示されます。

    コンソールへのログを使用すると、身体にあなたの文字列を追加するときのdivのonclickと呼ばれる機能を発射しようとしている上で、ユーザーがクリックすると、これは古典的なスコープの問題である

    +0

    それが想定されているものそれはどうしたらうまくいかないのですか?私が言ったように、 – Hamish

    +0

    は、ユーザーが確認をクリックしたときに警告を発することになっています。それがしていることは、 'コールバックは定義されていません'ログを記録することです –

    答えて

    1

    「をコールバックが定義されていません」 window.callback()。インラインのjavascriptを使用する代わりに、一般的には良いアイデアではありません.HTMLが作成された後は、クリックハンドラをバインドします。

    ... 
         // following line attaches callback to onclick event   
         r+="<div id='standard-modal-button' class='right_button'>CONFRIM</div></div>"; 
        r+="<div style='clear:both;'></div></div>"; 
    
        $('body').append(r); 
        $('#standard-modal-button').bind('click', callback); 
    } 
    
    +0

    これは素晴らしいアイデアです。それは完全に動作します。私はあなたの助けに感謝します –

    0

    あなたの関数にコールバックを入れようとするのではなく、click()を使用します。

    $('.right_button').on('click', function() { 
        alert("finally"); 
    }); 
    
    0

    私はどこから変更するべきかを知ることさえできません。まず、実際にはdivをページの一部として作成して非表示にします。それが表示されるべきとき。あなたは単に$('#standard-modal').show();を行うことができます。それでも問題が解決しない場合は、

    $('#cancel-btn').click(function(){ 
        alert('your message'); 
    }); 
    

    jqueryUI http://jqueryui.com/demos/dialog/

    -1

    少し危険をチェックアウトするが、:あなたは、その後のような他の回答で提案されてきたものを行うことができます

    r+="<div id='standard-modal-button' class='right_button' onclick='eval('(" + callback.toString() + ")()');' >CONFRIM</div></div>"; 
    
    +0

    なぜ世界では 'eval'が必要ですか? – Blazemonger

    関連する問題