3

ドロップダウンセレクターを備えたphpページがあります。セレクターが変更されたときにjquery、ajax、およびmysqlを使用してテーブルを作成し、.mytableというdivにドロップします。テーブル内のデータの一部は、テーブル内のデータに影響を与える php スクリプトへのリンクであるため、リロードせずにテーブルを更新したいと考えています。

テーブル内のリンクにイベント リスナーをアタッチしてこれを行う必要があることはわかっていますが、リスナーをアタッチするための適切なセレクターを取得できないようです。

どんな助けでもいただければ幸いです

user.php と呼ばれるユーザーに表示されるページは次のとおりです。

<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
<link href="css/table_style.css" rel="stylesheet" type="text/css">
</head>



<body>
<form name="form1" method="post" action="">
  <label for="select_data"></label>
  <select name="select_data" id="select_data">
    <option value=1>"Apples"</option>
    <option value=2>"Pears"</option>
    <option value=3>"Bananas"</option>
  </select>
</form>

<div id="mytable">This is where the table goes</div>


<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script src="get_table.js"></script>
</body>
</html>

jquery イベント ハンドラは次のとおりです。

$(document).ready(function (){
    //listen for select list to change, pass fruit into create_table.php, pass data into mytable div
    $('#select_data').change(function() {
        $.post('create_table.php',{fruit: fruit}, function(data) {
            $('div#mytable').html(data);});     

    });

    $('.fruit_link').change(function() {
        $.post('create_table.php',{fruit: fruit}, function(data) {
            $('div#mytable').html(data);});     

    });

});

イベント ハンドラーが呼び出してテーブルを作成し、html コードを返すスクリプトは次のとおりです。

<?php

require_once('Connections/dbc.php');
$fruit=$_POST['fruit'];
$sql="SELECT * FROM q_fruit WHERE FruitID =".$fruit;
$rec1=mysqli_query($dbc,$sql);

    echo '<table class="table" align="center">';
    echo '<th class="th" width="80px">Fruit ID</th>';
    echo '<th class="th" width="150px">Fruit Name</th>';
    echo '<th class="th" width="40px">Fruit Action 1</th>';
    echo '<th class="th" width="150px">Fruit Action 2</th>';

    while ($row=mysqli_fetch_array($rec1)) 
        {

            echo '<tr class="tr">';
            echo '<td class="td">'.$row['FruitID']. '</td>';    
            echo '<td class="td">'.$row['FruitName']. '</td>'; 
            echo '<td class="td"><a class="fruit_link" href="fruitaction1.php">'.$row['FruitID']. '</a></td>'; 
            echo '<td class="td"><a class="fruit_link" href="fruitaction2.php">'.$row['FruitID']. '</a></td>'; 
            echo '</tr>';
         }

    echo '</table>';


    mysqli_free_result($rec1);
    mysqli_close($dbc);

?>

そのため、値が変更されるたびにselectイベントハンドラーはテーブルを再現するように機能していますが、リンクハンドラーはそうではありません。リンクが返されたhtmlにあり、ユーザーファイルにまだ存在していないためだと思います。 java がリッスンしています。これを回避する方法はありますか?

4

1 に答える 1