2016-05-03 10 views
0

まだフォーラムには初めてのので、問題を解決するために全力を尽くします。基本的に私はモバイルウェブアプリケーションを開発しており、ボタンをクリックした後にウェブページをリロードするためのいくつかのオンタップ機能を持っています。デモのために私の小さなonTap関数の2つのコードを示します(数百行のコードを調べる必要はありません)。 licenses_button ontap関数は完全に問題なく動作しますが、back_button ontap関数や、アプリケーションの最初のメインページに作成されていない他のボタンはボタンとして機能しません。理由はわかりません。何かアドバイス? (私はback_buttonがほとんどコンテンツを持たないことを知っています、私はデバッグの目的でそれをたくさん削除しましたが、これはうまく動作しません)。アドバイスありがとう!JavaScript onTap関数

$("#licenses_button").onTap(function(event){ 
        $("#play_button").remove(); 
        $("#banner").remove(); 
        $("#licenses_button").remove(); 
        $(".cloud").remove(); 
        $(".cloudalternate").remove(); 


        $("body").append("<div id='back_button'>Back</div"); 
      }); 


      $('#back_button').onTap(function(event) { 

      $('#back_button').remove(); 

      }); 
+0

DOMがロードされた後に必ずこれらのスクリプトを実行してください。 – user2875289

+0

FYI https://learn.jquery.com/using-jquery-core/document-ready/ – user2875289

答えて

2

$(selector).onTap(callback);は、それが呼び出された瞬間に、選択した要素にハンドラをアタッチします。この時点ではまだ作成されていない要素は選択できません(まだ存在しないため)、ハンドラは取得されません。 要素を追加した後にの後にハンドラを添付する必要があります。あなたが働いていないが、メインページで作成されていないback_buttonやその他のボタンを述べ

$("#licenses_button").onTap(function(event){ 
    $("#play_button").remove(); 
    $("#banner").remove(); 
    $("#licenses_button").remove(); 
    $(".cloud").remove(); 
    $(".cloudalternate").remove(); 

    // Create the button. 
    var backButton = $("<div id='back_button'>Back</div"); 
    // Append it to the body. 
    $("body").append(backButton); 
    // Attach the handler to the new button. 
    backButton.onTap(function(event) { 
     backButton.remove(); 
    }); 
}); 
+0

迅速な対応をありがとう!私はプログラミングに関してはそれほど素晴らしいとは言えませんが、私のコードから実装例を見せてもらえますか? – Jordy

+0

答えを更新しました。 –

0

:たとえば

。これらは後で作成されるため、ボタンを作成した後にボタンのためにonTapイベントを設定するまで待つ必要があります。イベントハンドラを作成する前に設定しようとすると、イベントハンドラは機能しません。