我有这个标记
<html>
<body>
<div id ="wrap">
<div id = "main-content">
<!-- more markup here -->
<script>
$(window).scroll(function(){
if($(window).scrollTop() >= ($(document).height() $(window).height())*0.7) {
alert("SCROLLED")
}});
</script>
</div>
</div>
</body>
</html>
我通常在执行ajax调用以删除“main-content”的内容,并使用此方法执行此操作
$.get(sampleUrl, function(data) {
var newTitle = $(data).filter('title').text();
$('#main-content').children().remove();
$('#main-content').html($(data).find('#main-content').html());
},"html");
但是上面的代码只删除了DOM而不是像“scroll”事件这样的javascript事件,反正我是否可以删除/取消绑定它?
答案 0 :(得分:4)
当script
标记放在它执行的页面上时。它会在eventListener
上滚动window
。删除main-content
中的所有内容都不会撤消监听器,您的window
显然仍然存在。
如果希望停止此行为,则需要致电$(window).off('scroll')
。
$(window).unbind
是一种旧方法,已被弃用。
<强>旁注:强>
如果可以的话,你想避免使用内联JS。
答案 1 :(得分:1)
$(window).off('scroll')
应该可以解决问题。
答案 2 :(得分:1)
$(window).unbind('scroll');
事件绑定到窗口 - 在页面上script
标记在执行代码并绑定事件后没有任何区别。
实际上unbind()
是老派的方式,这些天$(window).off('scroll');
是"preferred" - 除非您使用的是早于1.7的旧版jQuery。 unbind()
仍然有效,尚未弃用,但总有可能存在。