0

入力用のテーブルを作成するajaxを作成しました。値は、アクティブおよびアクティブのボタンが付いたphpからのものになります。

   var counter_sub = 0 ;

     var html;
              $.ajax({
                        type:'POST',
                        url:'add_subject.php',
                   dataType:'json',
                       data:{'func_numbr':'2'},
                    success:function (data){
                       $.each(data, function(i, item) {

                        html = "<tr>";

                        html += "<td><lable>Subject: </label><input type='text' name='subject["+counter_sub+"]' value='"+data[i].subj_name+"'></td>";
                        html += "<td><input type='button' id='activate' name='active' class='button active' value='Active'> ";
                        html += "<input type='button' id='inactivate' name='active' class='button' value='Inactive'></td>";
                        html += "</tr>";
               $('#curr-elem-tble').append(html);

               counter_sub = counter_sub +1;
              });
                    }     
             });

そして、その横にある入力の値を警告するクリックイベントを作成しました

$('.active').click(function (){

          var prev = $(this).parent().prev().find('input[type=text]');

            var val = $(prev).val();

          alert(val);
     });

しかし、その横にあるアクティブなボタンをクリックしても何も起こりません

ここにhtmlがあります

               <div id="curr-elem-content">
                  <table id="curr-elem-tble">

                  </table>
                </div>
4

1 に答える 1

1

click()ロード時にすべて存在する要素にバインドされます。動的に追加された要素に click() を使用する場合は、jQuery の live() または on() メソッドを使用する必要があることに注意してください...コードを次のように変更します

$('.active').live('click', function (){

          var prev = $(this).parent().prev().find('input[type=text]');

            var val = $(prev).val();

          alert(val);
     });

ライブについてはこちら

于 2012-11-27T07:45:55.970 に答える