0

我有这个标记

  <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 而不是像“滚动”事件这样的 javascript 事件,无论如何我可以删除/取消绑定它吗?

4

3 回答 3

4

script标签放在页面上时,它会执行。它将eventListenerwindow. 删除其中的任何内容main-content都不会撤消侦听器,并且您的window意志显然仍然存在。

$(window).off('scroll')当你想停止这种行为时,你想打电话。

$(window).unbind是一种旧的做事方式,已被弃用。

边注:

如果可以的话,你想避免使用内联 JS。

于 2013-09-02T00:00:08.530 回答
1

$(window).off('scroll')应该做的伎俩。

于 2013-09-01T23:59:52.190 回答
1
$(window).unbind('scroll');

事件被绑定到窗口——在代码执行和事件被绑定后,标签所在的页面script没有任何区别。


实际上unbind()是老派的方式,这些天$(window).off('scroll');“首选” - 除非你被困在使用 jQuery 1.7 之前的旧版本。unbind()仍然有效,尚未弃用,但总有可能。

于 2013-09-02T00:00:17.563 回答