javascript replaceWith + classid

时间:2012-10-23 09:54:53

标签: javascript jquery html class this

似乎我遇到了一些问题而且我很困惑......

代码:

$(".post-click").click(function()
{
    var classid = $(this).attr('id');
    var postid = $(this).attr('id');
    postid = postid.replace('post-click-id_', '');

    alert("ID: " + classid + " PostID: " + postid);

    $(this).replaceWith('<img SRC="assets/img/refresh.gif" ALT="" id="' + classid + '">');

    $.post("likepost.php", { postid: postid } , function(data)
    {
        $(document).foundationTooltips();

        alert(data);
            $("#" + classid).replaceWith(data);

            var classes = $("#" + classid).attr('class');

            alert(classes);
    });
});

现在,这样做,当您点击它时,它会替换您单击的ID的文本。现在,我得到了这个:

$(".post-click").click(function()
{

在替换之后,似乎不再调用后点击。为了确保我用优秀的类替换它,我把'var classes = ...'放在那里。它会警告类后点击是替换。

替换是:    &LT; a class =“post-click”href =“#”&gt; test&lt; / a&gt;“;

为什么jQuery不再调用后点击的任何想法?

1 个答案:

答案 0 :(得分:2)

使用replaceWith时,您将替换DOM元素,并使用其事件绑定完成。

幸运的是,jQuery提供了.on,允许您使用事件委派(而不是循环重新绑定事件的新内容)。

将它应用于后点击的父节点,然后在参数中指定类。

e.g。

$(".some-parent-elem").on("click", ".post-click", 
       function (){...do stuff on click...});

这是如何工作的,它会监听.some-parent-elem的点击(由于事件冒泡意味着当你点击该元素的子元素时它会触发)然后如果被点击的原始目标元素有点击后的类,它运行函数。