0

助けが必要です。5秒ごとにdiv内のエントリのリストをロードします。各エントリはdivであり、一意のIDを持っています。このような:

<div class="entry">
<div class="textbox">
    <p class="entry-text">
        <?php echo $text;?>
    </p>
</div>
<div class="infobox">
    <p class="date"><a #<?php echo $id;?> id="<?php echo $id;?>" href="gen_details.php?id=<?php echo $id;?>"><?php echo $t;?></a> </p>
    <p class="ip"><?php echo $ip;?></p>
</div>

私が言ったように、これらは5秒ごとにロードされます。すべてのエントリの詳細ページを追加します。これは次のとおりです。

                $('.date a').click(function () {
                var dataString = 'id=' + $(this).attr("id"); 
                //alert(dataString);
                $.ajax({
                    type: "POST",
                    url: "gen_details.php",
                    data: dataString,
                    success: function(data) {
                        $("#content").hide().fadeOut('fast');
                        $("#content").html(data).show('fast');
                        refresh = 0;
                    },
                });
                return false;
            });

これは、リロードするまでは完全に正常に機能します。a hrefのハンドルが失われているようで、手順を実行する代わりにgen_details.phpに移動します。

.on()を使用しようとしましたが、$(this)(afaik)を使用できないため、.on()を使用してエントリのIDを取得する方法がわかりません。

私は自分の問題を少なくとも半分は説明したと思います。英語は私の母国語ではないので、それほど簡単ではありませんでした。

前もって感謝します。

4

2 に答える 2

2
Live click event bind event handler to element even after you reload some element. Default click event bind to element when a page load once you reload that element then it also delete event handler of that element.
works on till jquery 1.7 version.

    $('.date a').live('click',(function (e) {
    e.preventDefault()
                    var dataString = 'id=' + $(this).attr("id"); 
                    //alert(dataString);
                    $.ajax({
                        type: "POST",
                        url: "gen_details.php",
                        data: dataString,
                        success: function(data) {
                            $("#content").hide().fadeOut('fast');
                            $("#content").html(data).show('fast');
                            refresh = 0;
                        },
                    });

                });
//when jQuery > 1.7 then used this method

$('body').on('click' '.date a',function () {
  //call 
 });
于 2013-02-01T03:10:35.740 に答える
2

このセレクターを試してください

$('div').on('click', '.date a', function () {

これにより、イベントが親divに委任されます。したがって、動的に作成された要素に対しても機能するはずです。

于 2013-02-01T03:25:27.817 に答える