似乎我遇到了一些问题而且我很困惑......
代码:
$(".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不再调用后点击的任何想法?
答案 0 :(得分:2)
使用replaceWith
时,您将替换DOM元素,并使用其事件绑定完成。
幸运的是,jQuery提供了.on
,允许您使用事件委派(而不是循环重新绑定事件的新内容)。
将它应用于后点击的父节点,然后在参数中指定类。
e.g。
$(".some-parent-elem").on("click", ".post-click",
function (){...do stuff on click...});
这是如何工作的,它会监听.some-parent-elem的点击(由于事件冒泡意味着当你点击该元素的子元素时它会触发)然后如果被点击的原始目标元素有点击后的类,它运行函数。