javascript 替换 + classid

标签 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 = ...' 放在那里。它警告点击后类正在替换中。

替换为: 测试";

有什么想法为什么 jQuery 不再调用点击后操作吗?

最佳答案

使用 replaceWith 时,您将替换 DOM 元素及其事件绑定(bind)。

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

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

例如

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

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

关于javascript 替换 + classid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13027869/

相关文章:

javascript - 减少更高数字的公式

javascript - 不要滑动切换所有

javascript - 如何将变量中的字母隔离到它自己的变量中,并在单词长度处停止?

javascript - 检测浏览器是否支持 contentEditable?

javascript - 如何 append 一些代码并使其与已加载的 js 一起工作?

javascript - 删除按钮不在表格上工作

html - 在复选框值更改时更改 div 的类

javascript - 使用 bootstrap-vue 运行 jest 时出现问题

JavaScript 小部件必须等待 AngularJS 变量值

php - 如何在同一页面中读取/编辑/保存多个表单的信息?