当用户第二次单击不起作用时,用户需要重新加载页面以使其起作用
<script>
$(document).ready(function() {
$("#like_post").click(function(e) {
// $("#like_post").on("click", "#like_post", function (e) {
e.preventDefault();
var post_info = $("#post_info :input").serialize();
$.post("backend/ajax/like_post.php", post_info).done(function(data) {
$("#like_post").html(data);
$("#like").load(location.href+" #like>*","");
}).fail(function() {
//alert("Error submitting forms!");
})
})
})
</script>
这是db的后端返回 如果用户喜欢,它将显示
<div id="like_post><a href="" id="l"><input type="hidden" value="unlike" name="like_button" /><i style="color:red" class="fa fa-heart fa-2x" aria-hidden="true" data-toggle="tooltip" data-placement="top" title="'.$lang['you_liked_it'].'"></i>
</a></div>
否则它将显示
<div id="like_post"> <a href="" id="l"><input type="hidden" value="like" name="like_button" /><i class="fa fa-heart-o fa-2x" aria-hidden="true" data-toggle="tooltip" data-placement="top" title="'.$lang['like_it'].'"></i>
</a></div>
在前端进行相同的验证,将隐藏的输入更改为like或different,我的后端检查很好,当我检查html响应时返回所有OK,但是问题是当用户喜欢时jquery无法正常工作与不重新加载页面不同,它只需要单击一下,然后用户需要重新加载页面即可。
我之前也遇到过类似的问题,这与事件委派有关。
答案 0 :(得分:0)
在代码中使用注释行而不使用“ #like_post”:
$("#like_post").on("click", function (e) {
});