为什么我的 ajax 函数不能无限滚动?
Why my ajax function are not working on infinite scrolling?
我正在使用 waypoints.js 和后端构建一个具有无限滚动的网页,因为 Django.The 问题是,我的 jquery 和 ajax 函数无法处理新生成的内容当他们在第一页上处理内容时。
**编辑:-**我正在更新我的代码,以便更容易理解我的问题。
<div class="infinite-container">
{%if result %}
{% for c in result %}
<div class="infinite-item">
<img class="likebutton" value="{{c.id}}" id="{{c.id}}" src="{%static "/images/icons/renameheart.png" %}" />
<div class="LikeCount" id="LikeCount{{c.id}}">{{c.totallikes}}{%if c.totallikes|add:0 == 1%} Like{% elif c.totallikes|add:0 == 0 %} Like {% else %} Likes{% endif %}</div>
</div>
{% endfor %}
{% if result.has_next %}<a class="infinite-more-link" href="?page={{ result.next_page_number }}"></a><div class="loading">loading...</div>{% endif %}
{% endif %}
</div>
<script type="text/javascript">
var infinite = new Waypoint.Infinite({
element: $('.infinite-container')[0],
onBeforePageLoad: function () {
$('.loading').show();
},
onAfterPageLoad: function ($items) {
$('.loading').hide();
}
});
$(document).ready(function(){
$('.likebutton').click(function(){
var id=$(this).attr('value');
var csrftoken = $("[name=csrfmiddlewaretoken]").val();
var datat={'id':id};
$.ajax({
type:"POST",
url:"/like/",
data:datat,
headers:{
"X-CSRFToken": csrftoken
},
success:function(data){
if (data.condition==="Liked"){
$('#'+id).attr("src","/static/images/icons/renameheart.png");
}
if (data.condition==="Unliked"){
$('#'+id).attr("src","/static/images/icons/heart.png");
}
var likecon=$('#LikeCount'+id);
likecon.empty();
if (data.likes > "1"){
likecon.text(data.likes+" Likes");
}else{
likecon.text(data.likes+" Like");
}
}
});
});
});
现在假设如果每个页面都包含 5 个条目,那么我的 jquery 和 ajax 函数只处理前 5 个条目。
这正是 onAfterPageLoad
的用途,以确保任何 javascript 你 运行 在原始页面中的元素上你也可以 运行新增元素:
var performClickEvent = function(event) {
...
}
$(document).ready(function(){
$('.likebutton').on('click', performClickEvent)
}
onAfterPageLoad: function($items) {
$('.loading').hide();
$items.each(function() {
$(this).find('.likebutton').on('click', performClickEvent);
}
}
其中 performClickEvent
是您还作为点击处理程序附加到文档准备就绪的 $('.likebutton')
div 的函数。
我正在使用 waypoints.js 和后端构建一个具有无限滚动的网页,因为 Django.The 问题是,我的 jquery 和 ajax 函数无法处理新生成的内容当他们在第一页上处理内容时。 **编辑:-**我正在更新我的代码,以便更容易理解我的问题。
<div class="infinite-container">
{%if result %}
{% for c in result %}
<div class="infinite-item">
<img class="likebutton" value="{{c.id}}" id="{{c.id}}" src="{%static "/images/icons/renameheart.png" %}" />
<div class="LikeCount" id="LikeCount{{c.id}}">{{c.totallikes}}{%if c.totallikes|add:0 == 1%} Like{% elif c.totallikes|add:0 == 0 %} Like {% else %} Likes{% endif %}</div>
</div>
{% endfor %}
{% if result.has_next %}<a class="infinite-more-link" href="?page={{ result.next_page_number }}"></a><div class="loading">loading...</div>{% endif %}
{% endif %}
</div>
<script type="text/javascript">
var infinite = new Waypoint.Infinite({
element: $('.infinite-container')[0],
onBeforePageLoad: function () {
$('.loading').show();
},
onAfterPageLoad: function ($items) {
$('.loading').hide();
}
});
$(document).ready(function(){
$('.likebutton').click(function(){
var id=$(this).attr('value');
var csrftoken = $("[name=csrfmiddlewaretoken]").val();
var datat={'id':id};
$.ajax({
type:"POST",
url:"/like/",
data:datat,
headers:{
"X-CSRFToken": csrftoken
},
success:function(data){
if (data.condition==="Liked"){
$('#'+id).attr("src","/static/images/icons/renameheart.png");
}
if (data.condition==="Unliked"){
$('#'+id).attr("src","/static/images/icons/heart.png");
}
var likecon=$('#LikeCount'+id);
likecon.empty();
if (data.likes > "1"){
likecon.text(data.likes+" Likes");
}else{
likecon.text(data.likes+" Like");
}
}
});
});
});
现在假设如果每个页面都包含 5 个条目,那么我的 jquery 和 ajax 函数只处理前 5 个条目。
这正是 onAfterPageLoad
的用途,以确保任何 javascript 你 运行 在原始页面中的元素上你也可以 运行新增元素:
var performClickEvent = function(event) {
...
}
$(document).ready(function(){
$('.likebutton').on('click', performClickEvent)
}
onAfterPageLoad: function($items) {
$('.loading').hide();
$items.each(function() {
$(this).find('.likebutton').on('click', performClickEvent);
}
}
其中 performClickEvent
是您还作为点击处理程序附加到文档准备就绪的 $('.likebutton')
div 的函数。