2016-11-29 6 views
1

私は動的にHTMLを作成するために、AJAXを使用するが、私は、私は最初の代わりに、アンカータグのボタンを使用しようとしましたが、私は動的にボタンを作成するためにイベントハンドラを追加する方法を見つけ出すことができなかった問題jQueryの動的に作成されたボタンにイベントハンドラを追加する方法は?

<script> 
    function page_loaded(){ 
     jQuery.ajax({ 
      method: "GET", 
      url: "get_data_dashboard.php", 
      success: function(data){ 
       var markers = JSON.parse(data); 
       for(var i = 0; i < markers.length; i++){ 
        var m = markers[i]; 
        var markerHTML = "<div class='marker'>" + 
         "<span id='naziv'>Naziv zahtjeva: " + m.naziv + "</span></br>" + 
         "<span id='ulica'>Ulica: " + m.ulica + "</span></br>" + 
         "<p id='opis'>Opis:</br>" + m.opis + "</p></br>" + 
         "<span id='email'>Email: " + m.email + "</span></br>" + 
         "<img id='slika' src='" + m.link_slike + "' />" + "</br>" + 
         "<textarea rows='5' cols='30' maxlength='500' id='t" + m.marker_id + "' placeholder='Komentar'>" + "</textarea></br>" 
         + "<div class='buttons'><a href='odobri_prijavu.php?id=" + m.marker_id + "'>Odobri</a>" + 
          "<a href='izbrisi_prijavu.php?id=" + m.marker_id + "'>Izbriši</a>" + "</div>" + 
         "</div><hr>"; 

        $('#content').append(markerHTML); 
       } 

      } 
     }) 



    } 
    $(document).ready(page_loaded()); 

</script> 

が発生しましたAJAXを介して、テキストエリアの値と値として適切なIDを持つPHPスクリプトにリクエストを送信します。だから私はアンカータグを使用して、私はIDを送信することができたが、私はそれを参照する方法を知らないので、私はテキストエリアの値を送信することはできませんでした、はじめてアンカータグに設定され、テキストエリアにテキストを入力したいと考えています。

+0

。 – Hoyen

+0

あなたのタグにIDを割り当てると、テキストエリアにボタンと同じIDが与えられ、 'txtArea'が追加されます。 onclick(またはあなたの必要なイベント)をボタンに追加し、ボタンのidをとる関数を与えます。その方法は、ボタンとそれに関連付けられているテキストエリアを取得する方法を知っている。 – monssef

答えて

1
<script> 
    function page_loaded(){ 
     jQuery.ajax({ 
      method: "GET", 
      url: "get_data_dashboard.php", 
      success: function(data){ 
       var markers = JSON.parse(data); 
       for(var i = 0; i < markers.length; i++){ 
        var m = markers[i]; 
        var markerHTML = "<div class='marker'>" + 
         "<span id='naziv'>Naziv zahtjeva: " + m.naziv + "</span></br>" + 
         "<span id='ulica'>Ulica: " + m.ulica + "</span></br>" + 
         "<p id='opis'>Opis:</br>" + m.opis + "</p></br>" + 
         "<span id='email'>Email: " + m.email + "</span></br>" + 
         "<img id='slika' src='" + m.link_slike + "' />" + "</br>" + 
         "<textarea rows='5' cols='30' maxlength='500' id='t" + m.marker_id + "' placeholder='Komentar'>" + "</textarea></br>" 
         + "<div class='buttons'><a href='odobri_prijavu.php?id=" + m.marker_id + "' onclick="clickHandler('"+m.marker_id+"')">Odobri</a>" + 
          "<a href='izbrisi_prijavu.php?id=" + m.marker_id + "'>Izbriši</a>" + "</div>" + 
         "</div><hr>"; 

        $('#content').append(markerHTML); 
       } 

      } 
     }) 



    } 
    $(document).ready(page_loaded()); 
    function clickHandler(id){ 
     $('#'+id) // selects the button 
     $('#t'+id) // selects the text area 
    } 
</script> 
+0

これは私が探していたものですが、アンカータグをボタンでもう一度置き換え、完全に動作します:D – Gigaxel

3

個々の「要素」を聞く代わりに、特定の要素の親を実際に聞くことができます(on()に別のパラメータを指定する必要があります)。一般的なパターンは「ボディ」を聴くことです(ボディは技術的にすべての親です)。しかし、非ダイナミックな親要素は機能します!ここに例があります:

//notice the second parameter supplied 
$("body").on("click", ".my-dynamic-element", function(e){ 
    //awesome code that makes the world a better place goes here 
    //this code triggers when .my-dynamic-element is clicked, wootz 
}); 
+2

コメントを大好き:D。私はそれを試して、報告する:D – Gigaxel

+1

私たちに教えてください!さもなければ私達がさらにデバッグすることができるようにフルコードを投稿してください – hellojebus

+0

これは良いコメントです。コードを「よりスマートに」することは、テンプレートを使用することです。 'script type = "x-template"' ... example: ''を調べてみてください。 これは本当に私が信じている標準ではありませんが、ブラウザが解析しないのでスクリプトを使用できます。その後、jqueryを使ってスクリプトの文字列全体を解析することができます。プレーンテキストファイルを使用できるようにするには、文字列の連結よりもずっと面倒ではありません。 'template.find( '.whatever')。text(replacement);' – twicejr

2

イベントの委任はあなたの友人です。

は、私が実際にイベント処理を行う任意のアクションを参照してください `tを、何かのように簡単な解決策は次のようになります。あなたはおそらくイベントの委任を使用したい

$(document).on('click', '.your-button-class', function(){ 
// do your thing 
}); 
+0

これらは、私が削除したためではありません。ボタンをアンカータグに置き換えました。アンカータグをボタンに置​​き換え、イベント委任を試みます。 – Gigaxel

+0

ああ、私は最初のことは知りませんでしたが、正直なところボタンやアンカータグは何の違いもなく、あなたが望むものを使用することができます。 – Merv

関連する問題