0

更新しました:

もっとajaxボタンをロードしたいのですが、データベースからデータを抽出するphpファイルからデータをロードしたいです。

一度だけロードすることはできましたが、新しい [詳細] ボタンをクリックしても機能しません。

Javascript は次のとおりです。

$(document).ready(function(){
    $(".more").click(function(){
        var ID = $(this).attr("id");
        if(ID) {
            $("#more"+ID).html('<img src="moreajax.gif" />');

            $.ajax({
                type: "POST",
                url: "more.php",
                data: "lastimg="+ ID,
                cache: false,
                success: function(html){
                    $("div#updates").append(html);
                    $("#more"+ID).remove(); // removing old more button
                }
            });
        } else {
            $(".morebox").html('The End');// no results
        }

        return false;
    });
});

そしてここにmore.phpがあります

$lastimg = mysql_real_escape_string($_POST['lastimg']);

$result = $mmhclass->db->query("SELECT * FROM `file_storage` WHERE `is_private` = '0' AND `file_id` < '$lastimg' ORDER BY `file_id` DESC LIMIT 10;", array(MYSQL_FILE_STORAGE_TABLE));

while($row=mysql_fetch_array($result))
{
$file_id = $row['file_id'];
$filename = $row['filename'];
?>
    <li>
        <?php echo $filename; ?>
    </li>
<?php
}
?>
<div id="more<?php echo $file_id; ?>" class="morebox">
    <a href="#" class="more" id="<?php echo $file_id; ?>">more</a>
</div>
4

2 に答える 2

3

ajaxが完了すると、.more要素がページ上で新しくなるため、一度だけ機能するため、clickアタッチしたイベントハンドラーは機能しなくなります。

イベント委任を使用する必要があります。

$('body').on('click', '.more', function () {
    // your code
});
  • 注:jQuery 1.7+必須です。

参考文献:

  • .on()- jQuery API ドキュメント
于 2013-06-05T03:25:29.660 に答える
0

jQueryのライブ機能を使ってもいいと思います

$(".more").live("click", function(){ 

// Code here
});
于 2013-06-05T03:32:04.620 に答える