Jquery .click()处理程序重新加载页面而不是触发事件
我正在使用CodeIgniter,并试图实现jQuery/AJAX在我的站点上启动操作,而不刷新页面。简单地说,它就像Facebook上的帖子和类似按钮一样 到目前为止,我成功地编写了一个小脚本,除了每隔三次单击就重新加载页面外,它可以完成任务 我将操作按钮封装在一个id为“post”+post的dbJquery .click()处理程序重新加载页面而不是触发事件,jquery,Jquery,我正在使用CodeIgniter,并试图实现jQuery/AJAX在我的站点上启动操作,而不刷新页面。简单地说,它就像Facebook上的帖子和类似按钮一样 到目前为止,我成功地编写了一个小脚本,除了每隔三次单击就重新加载页面外,它可以完成任务 我将操作按钮封装在一个id为“post”+post的dbid的div中 然后,我向单击的链接添加了一个value属性,该链接保存了post id,类如下所示 <div> <h3>User Name</h3> <p
id的div
中
然后,我向单击的链接添加了一个value属性,该链接保存了post 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();
});
用户名
帖子内容
$(“.like”)。单击(函数(事件){
var post=$(此).attr(“值”);
var mydv=“#post_u2;”+post;
$.ajax({
类型:“POST”,
url:'localhost/like/'+post,
成功:功能(响应){
如果(响应=“成功”)
{
$(mydv).load(“localhost/newsfeed”+mydv);
}
其他的
{
警报(“错误”);
}
}
});
event.preventDefault();
});
当页面在第三次单击时重新加载时,它只是一个简单的重新加载过程,没有触发反馈或进程
我一定是做错了什么,我只是不知道是什么。
- 添加
event.preventDefault()代码>事件处理程序代码顶部的代码
- 同时将代码包装在
文档中。就绪
- 还要确保jQuery已加载
尝试使用返回false
(而不是event.preventDefault();
):
或者像@Dipesh Parmar提到的event.preventDefault()
应该位于处理程序的顶部。您正在替换包含a.like
的div
的内容。click
处理程序将不会附加到由于调用load()
而添加的任何锚点。您需要使用事件委派:
$(document).on('click', '.like', function(e) {
e.preventDefault();
// your code
});
$(this.attr(“值”)代码>-永远不要这样做!!始终使用.val()
获取值!或者只是这个.value
。。。此外,URL必须以/
或http://
开头-否则localhost
将被视为路径的一部分,而不是主机名。@ThiefMaster此值在该实例中不起作用,anchor的没有值
你能为它发布一个JSFIDLE链接吗?@ThiefMaster我可以确认@billyonecan所说的,.val()
不起作用。我添加了http://
哦,我没有注意到它是a
标记。在这种情况下,首先使用值是错误的。改为使用数据值
,并使用访问它。数据('value')
!我添加了event.preventDefault()代码>紧跟在$(“.like”)。单击(函数(事件){
,仍然没有更改。jQuery被加载,代码被包装在文档中。准备好了
您真是个天才!!!!!感谢您提供了文档链接。
$(document).on('click', '.like', function(e) {
e.preventDefault();
// your code
});