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呼び出しを行っていますが、これを使用してそれを行います

   $.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タグがページに配置されると、タグが実行されます。eventListenerでスクロールするための になりwindowます。内部のコンテンツを削除しても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');「推奨」されています-1.7より古いレガシーバージョンのjQueryを使用している場合を除きます。unbind()まだ機能し、まだ非推奨ではありませんが、そうなる可能性は常にあります。

于 2013-09-02T00:00:17.563 に答える