iT邦幫忙

1

jquery scroll()到特定位置只執行函式一次

Rafiki 2017-11-15 18:59:5312549 瀏覽
  • 分享至 

  • xImage

程式碼為以下

$(window).scroll(function() {
  if($("#illus").offset().top - 300 < $(window).scrollTop()) {
    illustration();
  }
});
function illustration() {
$(".number").each(function(index, elm) {
  var from = 0,
      to = $(this).attr("data-to"),
      id = setInterval(frame, 10);
  function frame() {
    if(from > to) {
      clearInterval(id);
    } else {
      $(elm).html(from);
      from++;
    }
  }
});
}

到達特定位置後再滾動就會再達成if條件
造成重複執行illustration()
想請問該怎麼設定才能讓它只執行一次illustration()就好
謝謝

看更多先前的討論...收起先前的討論...
froce iT邦大師 1 級 ‧ 2017-11-15 19:07:18 檢舉
加個全域變數當checker,做過了把他記錄下來?
Rafiki iT邦新手 5 級 ‧ 2017-11-15 20:58:08 檢舉
有試過
```
$(window).scroll(function() {
var i = 0;
if($("#illus").offset().top - 300 < $(window).scrollTop() && i == 0) {
illustration();
i++;
}
});
```
這樣也是無法
可以問一下您想要的需求嗎
您想要第一次捲超過300執行1次illustration()
那如果捲上去又再捲下來呢,還要再觸發一次嗎?

然後您的 var i = 0; 要宣告在 $(window).scroll(function() 外面,
您這樣宣告每次觸發, i 都還是會被歸 0, XD
Rafiki iT邦新手 5 級 ‧ 2017-11-15 21:59:06 檢舉
謝謝回答
結果真的是我放錯地方所以一直被歸0
放外面就解決了
froce iT邦大師 1 級 ‧ 2017-11-16 07:17:22 檢舉
...
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友回答

立即登入回答