我如何发送AJAX请求的内容是通过无限滚动加载的
How can I send AJAX request for the content which are loaded via Infinite Scroll?
我正在构建一个类似Twitter的简单项目,但非常简单:)用户主页上有很多推文(时间线)。因此,每条推文都有收藏夹按钮。当用户点击收藏按钮时,它会向服务器发送AJAX请求来存储收藏的推文。所以最喜欢的按钮是这样的:
<a href="#" id="1"><i class="icon-star-empty"></i></a>
<a href="#" id="2"><i class="icon-star"></i></a>
<a href="#" id="3"><i class="icon-star-empty"></i></a>
...
...
我使用以下JavaScript发送AJAX请求:
$("i").on("click", function() {
if ( $(this).hasClass("icon-star-empty") ){
ajaxURL = "/setFavorite"
} else{
ajaxURL = "/removeFavorite"
}
var linkID = $(this).parent().prop("id");
var obj = $(this);
$.ajax({
url: ajaxURL,
type: "POST",
data: {quoteID : linkID},
success: function() {
obj.hasClass("icon-star") ? obj.removeClass("icon-star").addClass("icon-star-empty") : obj.removeClass("icon-star-empty").addClass("icon-star");
}
});
})
由于有很多推文,我设置了无限滚动插件。当我没有设置无限滚动时,AJAX请求工作得很好。但当我设置时,那些AJAX请求对那些通过无限滚动加载的推文不起作用。我的意思是,当我点击通过无限滚动加载的推文的收藏夹按钮时,他们不会向服务器发送AJAX请求。但AJAX请求可以处理通过默认HTML而不是无限滚动加载的推文。
所以我的问题是如何解决这个问题?我如何发送AJAX请求通过无限滚动加载的推文?
提前谢谢。
$('selector').on('event', callback)
仅绑定处理选择器时存在的元素的事件。但是,无限滚动代码稍后加载新元素,因此不会为它们绑定任何事件。
解决方案是使用委托:
$('selector').on('click', 'i', function() {
// do stuff
});
selector
需要是包含所有(动态添加的)i
元素的父元素。
相关文章:
- 我如何发送AJAX请求的内容是通过无限滚动加载的
- 无限滚动:从数据库加载所有数据并滚动以显示更多
- 等到无限滚动完成加载 - Javascript
- Bxslider预加载程序在没有图像的情况下以无限循环运行
- 为什么无限滚动总是加载相同的图像
- jQuery创建无限滚动的加载更多按钮
- 无限ajax滚动未加载javascript
- 我怎么能用Codeigniter在可滚动的部分创建一个无限向下滚动的网格加载程序呢
- 如何将我的脚本应用于通过无限滚动加载的图像
- jQuery 无限滚动的加载过早触发
- 我们可以在不将其加载到无限可滚动网页中的情况下访问 DOM 元素吗?
- 预加载谷歌DFPiframe,以防内容无限
- 保罗爱尔兰无限滚动一次加载 2 页
- AJAX 无限滚动以预加载内容
- 我的脚本只运行一次,我想要无限次而不重新加载 html 页面
- 加载内容时阻止无限滚动跳转到页面末尾
- 选择2-无限滚动不加载带有远程数据的下一页
- AngularJS无限滚动未加载
- Facebook Pixel和FireFox无限加载
- httpChannel.redirectTo()无限加载