1

動的に生成されたテーブルでの .on の起動に問題があります。私は自分のコードを設定しているので、ページが読み込まれると動的に div にテーブルが設定されます。画像をアイコンとして使用していますが、何らかの理由で、ユーザーがアイコンをクリックしたときに .on を起動できません。

私が持っている ajax コードは正常に動作し、div に必要な情報を入力します。.on が処理するデータを返す php ファイルは次のとおりです。

(私は jquery の初心者で、趣味のプログラマーです!)

ajax コードは次のとおりです。

   $.ajax({url: "load_agency_list.php",  
        data: "query=SELECT * FROM manual.agency_list",     
        type: "POST",
        success: function(data){  

         //when user clicks info display Agency Information
        $("#agency_list_window").html(data);
}
});

// start of .php file //

<table id="agency_table" class="inputtable ui-widget-content">
<th class="tbl_title_item"></th><th class="tbl_title_item">Agency Name:
</th><th class="tbl_title_item">V</th><th class="tbl_title_item">E</th>
<th class="tbl_title_item">D</th>



<?php
include("/includes/serv_connect.php");


$query = '';

if(!isset($_POST['query'])) 
{
    echo("Sorry there was a problem loading the agency list.");
    exit;
}
else
{
    $query = mysql_escape_string($_POST['query']);

}

$getitems = mysql_query($query,$link);
while($eachrow = mysql_fetch_array($getitems, MYSQL_ASSOC))
      {      
        echo("<tr class=\"tbl_item_format\">
<td>{$eachrow["agency_id"]}</td><td style=\"width: 400px\">{$eachrow["agency_name"]}</td>
<td>
<img alt=\"{$eachrow['agency_id']}\" class=\"ui-icon ui-icon-info agencyitem\"    src=\"/img/blank.png\"></td>
<td><img alt=\"{$eachrow['agency_id']}\" src=\"/img/blank.png\" title=\"Edit Agency Information\" 
class=\"ui-icon ui-icon-wrench editagencyitem\"></td>
<td><img alt=\"{$eachrow['agency_id']}\" src=\"/img/blank.png\" class=\"delagency ui-icon ui-icon-trash\"></td></tr>");
      }

?>
</table>

//phpファイル終了。

これで、情報アイコンの画像をクリックしたときに実行されるメイン ファイルのコードが表示されます。

$('#agency_table').on('click','.agencyitem',function() {
  ...some stuff here
});

$("#agency_table tr td .agencyitem)... などのようにセレクターを絞り込んでみましたが、何もしませんでした。

さまざまな解決策を試しましたが、成功しませんでした。どんな助けでも大歓迎です。

ありがとう!

4

2 に答える 2

1

試してみてください$("#agency_list_window").on('click','.agencyitem',function() {...

そしてところで。mysql_* 関数は非推奨であるため、使用を中止する必要があります。代わりに、mysqli_* または PDO への切り替えを検討する必要があります。また、レイアウトにテーブルを使用しています...それについて読んでください。

于 2013-08-18T23:46:11.043 に答える
0

を使用して.ajax()おりagencyitem、応答として作成されているため、メソッドは後で.on('click')内部で発生する必要があります。そうしないと、未定義になります。つまり、HTML はまだ作成されていないため、メソッドを割り当てることはできません。試す:success: function(){*data first in here*/}data.on()

$.ajax({
  url: 'load_agency_list.php',  
  data: 'query=SELECT * FROM manual.agency_list',     
  type: 'POST',
  success: function(data){  
    $("#agency_list_window").html(data);
    // run your `.on()` method here
  }
});
于 2013-08-18T23:50:58.097 に答える