1

我正在使用 CodeIgniter 并尝试实现 jQuery/AJAX 在我的网站上触发操作而不刷新页面。只需将其点赞 Facebook 帖子和点赞按钮即可

到目前为止,我设法编写了一个小脚本来完成工作,除了它在每三次点击时重新加载页面。

我将操作按钮包含在div带有 id 'post_'+ 帖子的 db 的a 中id

然后我向单击的链接添加了一个 value 属性,该链接包含帖子 ID 和类。

<div>
<h3>User Name</h3>
<p>Post Content</p>
<div id="post_3">
 <a href="#" class="like" value="3">Like</a>
<div>
</div> 



$(".like").click(function(event){
var post = $(this).attr("value");
     var mydv = "#post_"+post;

      $.ajax({
      type: "POST",
      url: 'localhost/like/'+post,
      success: function(response) {
      if (response == "Success")
        {
            $(mydv).load("localhost/newsfeed"+mydv);
          }
          else
          {
            alert("Error");
          }

        }
      });
     event.preventDefault();
  });

当页面在第三次点击时重新加载时,它只是一个简单的重新加载,没有任何反馈或流程被触发。

我一定是做错了什么,我只是不知道是什么。

4

3 回答 3

2

您正在替换div包含a.like. click处理程序不会附加到由于load()调用而添加的任何锚点。您需要使用事件委托:

$(document).on('click', '.like', function(e) {
  e.preventDefault();
  // your code
});

文档.on()

于 2013-08-27T12:45:29.297 回答
0
  • 在事件处理程序代码的顶部添加event.preventDefault();代码。
  • 还将代码包装在document.ready.
  • 还要确保 jQuery 已加载。
于 2013-08-27T12:36:55.857 回答
0

尝试使用return false(而不是event.preventDefault();):

$(".like").click(function(){
  ...
  return false;
});

或者正如@Dipesh Parmar 提到event.preventDefault();的应该在处理程序的顶部。

于 2013-08-27T12:40:13.853 回答