使用 jQuery 检测 ajax 加载元素中的滚动
Detect scroll in an ajax loaded element with jQuery
如果有一个按钮加载了 ajax,并且您需要监听点击它的声音,请像这样使用 .on()
:
$(document).on('click', '.button', function(e) {
// Do somethinh...
});
我知道,但我不能对卷轴使用同样的逻辑。我得到了一个名为 #overlayer
的元素,它加载了 ajax,然后我尝试监听它的滚动并触发一个函数,该函数在它即将退出时向侧边栏添加粘性 class视口:
$(document).on('scroll', '#overlayer', function() {
stickySidebar();
console.log('scroll happened');
});
但是没用。
我可以让它像这样工作:
$('#overlayer').on('scroll', function() {
stickySidebar();
console.log('scroll happened');
});
但它不适用于 ajax 加载的内容。
将事件绑定到 ajax 加载的元素将不起作用,除非您在将元素插入 DOM 之后执行此操作,例如在回调函数中。假设您使用的是 $.post
,请执行以下操作:
$.post("filename", function(data){
//insert element here
//event handler
$('#overlayer').on('scroll', function() {
stickySidebar();
console.log('scroll happened');
});
})
如果有一个按钮加载了 ajax,并且您需要监听点击它的声音,请像这样使用 .on()
:
$(document).on('click', '.button', function(e) {
// Do somethinh...
});
我知道,但我不能对卷轴使用同样的逻辑。我得到了一个名为 #overlayer
的元素,它加载了 ajax,然后我尝试监听它的滚动并触发一个函数,该函数在它即将退出时向侧边栏添加粘性 class视口:
$(document).on('scroll', '#overlayer', function() {
stickySidebar();
console.log('scroll happened');
});
但是没用。
我可以让它像这样工作:
$('#overlayer').on('scroll', function() {
stickySidebar();
console.log('scroll happened');
});
但它不适用于 ajax 加载的内容。
将事件绑定到 ajax 加载的元素将不起作用,除非您在将元素插入 DOM 之后执行此操作,例如在回调函数中。假设您使用的是 $.post
,请执行以下操作:
$.post("filename", function(data){
//insert element here
//event handler
$('#overlayer').on('scroll', function() {
stickySidebar();
console.log('scroll happened');
});
})