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(),但我不知道如何使用 .on() 获取条目的 ID,因为我不能使用 $(this) (afaik)。

我希望我至少解释了我的问题一半。英语不是我的母语,所以没那么容易。

提前致谢。

4

2 回答 2

2

试试这个选择器

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

这会将事件委托给其父 div。所以它也应该适用于动态创建的元素。

于 2013-02-01T03:25:27.817 回答
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 回答