无限滚动JavaScript已经被解雇了
我有一个加载项目的站点,并使用jquery无限滚动插件在用户滚动时加载更多项目。
当用户将鼠标hover在某个项目上时,该项目上会显示更多小的div。 简单。 hover时显示哪些div取决于用户所在的页面,因此它们取决于知道它们所在的页面。 我使用一个简单的变量来排序。
我使用以下js来决定显示哪些div。 例如从主页
$(".list_item_image").mouseenter(function () { $(this).children(".gl_view2").show(); $(this).children(".gl_relist").show(); }); $('.list_item_image').mouseleave(function() { $(this).children(".gl_view2").hide(); $(this).children(".gl_relist").hide(); });
最初加载div(gl_view2和gl_relist),但display:none;
现在,这个js被加载到页脚中以确保它在有问题的div之后。
假设我有无限滚动设置一次更新15个项目
对于前15个项目,这一切都完美地工作(在mouseenter上显示应该显示/覆盖的div),但之后项目加载但是mouseenter不再起作用。 我猜这是因为js已加载,当下一个项目加载到页面上时,js没有任何效果。
要使用无限滚动加载下一个项目我正在使用:
我也尝试在每个项目后加载js但仍然只适用于前15个。
我也尝试过,但这根本不起作用:
$("body").on("mouseenter", ".list_item_image", function () { ... }); $("body").on("mouseleave", ".list_item_image", function () { ... });
以前有人遇到过这样的事吗? 任何修复的想法?
你应该使用on()
方法使用事件委托
$("body").on("mouseenter", ".list_item_image", function () { ... }); $("body").on("mouseleave", ".list_item_image", function () { ... });
这会将你的处理程序附加到稍后通过ajax注入DOM的新元素上
只有当你使用旧版本的jQuery时才使用delegate()
,否则使用on()
固定(我希望如此)
似乎js丢失了包含在: $(document).ready(function(){ ... });
谢谢你的帮助。