4

何かをしてポップアップを閉じるボタンを作成しようとしています(ボタンはポップアップにあり、jqueryモバイルを使用しています)

<div class="ui-block-b">
      <a href="#popupDialog" data-rel="popup" data-position-to="window" data-role="button" data-inline="true" data-transition="pop">Feedback</a>
</div>
<div data-role="popup" id="popupDialog"  data-theme="c">
      <div data-role="header" data-theme="a" class="ui-corner-top">
           <h1>Feedback</h1>
      </div>
      <div data-role="content" data-theme="d" class="ui-corner-bottom ui-content">
       <h3 class="ui-title">Thank you for your participation!</h3>
       <p>Some content</p>
       <a href="#" data-role="button" data-inline="true" data-rel="back" data-transition="flow" data-theme="b">Cancel</a>
       <input type="button" id="feedback_send" value="Send"  data-inline="true" data-theme="b">
     </div>
</div>

ボタンをクリックすると、サーバーにデータを送信してポップアップを閉じたいと思います(サーバーにデータを送信する機能で送信を接続しますが、後でポップアップを閉じる方法がわかりません)、キャンセルクリックをエミュレートしようとしましたが、そうではありません近い。

4

2 に答える 2

7

ポップアップは次のように閉じることができます:

$( ".selector" ).popup( "close" );

しかし、あなたの場合、次のように使用する必要があります。

setTimeout(function(){
    $( ".selector" ).popup( "close" );
},1);

setTimeout が必要なのは、Web キット ブラウザがポップアップをわずかな遅延なしに閉じることができないためです。

作業例: http://jsfiddle.net/Gajotres/B6TgZ/

$(document).on('pagebeforeshow', '#index', function(){ 
    $(document).on('click', '#feedback_send', function(){ 
        setTimeout(function(){
            $( "#popupDialog" ).popup( "close" );
        },1);
    });    
});

ポップアップを閉じる前に、必要なすべてのことを行ってください。別のアプローチもあります。いつでもポップアップを閉じて、popupafterclose必要なことを実行するようにトリガーできます。

$( "#popupDialog" ).on( "popupafterclose", function( event, ui ) {
    // Do something here, it requires SOlution 1 to trigger popup close
    alert('Popup closed');
});

もちろん、このソリューションでは、ポップアップを閉じる機能をトリガーするボタンが必要です。ただし、ソリューション 1 とは異なり、ポップアップが閉じられる前にわずかな遅延 (遅延 = ポップアップが閉じられる前に実行するアクション) は発生しません。

于 2013-06-07T14:19:18.597 に答える