我有一个带有航点无限滚动插件的页面加载内容。
在 AJAX 调用成功并添加 DOM 元素后,将运行回调以重新初始化 javascript 功能,如轮播、按钮和其他动画。
在第一次 AJAX 调用中,负责切换的按钮正常工作。在下一次 AJAX 调用中,新的 DOM 项工作,但之前的按钮现在在单击时执行两次切换。在第三次调用中,原始项目现在运行三次,第二个项目运行两次,新项目运行一次,依此类推,第四次,随着 AJAX 内容的调用继续复合。
如何隔离回调以不影响之前加载的内容,或者,有没有办法为JS设置全局状态,这样我就不需要每次都需要回调?
一些伪代码:
$('.infinite-container').waypoint('infinite', {
onAfterPageLoad: function() {
//Carousel options
$('.carousel-container').carousel({
options: here,
....
});
//Button Toggles
$('.button').click(function(){
var self = $(this);
$(this).siblings('.caption').animate({
height: 'toggle'
}, 200, function() {
// Callback after animate() completes.
if(self.text() == 'Hide Details'){
self.text('Show Details');
} else {
self.text('Hide Details');
}
});
});
}
});
编辑:谢谢大家。所有的答案都让我找到了不同但合适的解决方案。之所以选择所选内容,是因为它汇集了所有建议的问题,值得一读。