我最近在我的項目中將jquery-waypoints從2.x升級到3.x,發現我的很多代碼都崩潰了。在我的處理程序中,所有對$(this)
的引用都必須更改爲$(this.element)
,一旦我找出問題的原因,我很容易修復。Waypoint 3.0中的triggerOnce選項發生了什麼變化?
我還沒有弄清楚012xx選項發生了什麼事情,它會阻止航點多次發射。任何想法,爲什麼這被刪除,我怎樣才能實現相同的功能?
我最近在我的項目中將jquery-waypoints從2.x升級到3.x,發現我的很多代碼都崩潰了。在我的處理程序中,所有對$(this)
的引用都必須更改爲$(this.element)
,一旦我找出問題的原因,我很容易修復。Waypoint 3.0中的triggerOnce選項發生了什麼變化?
我還沒有弄清楚012xx選項發生了什麼事情,它會阻止航點多次發射。任何想法,爲什麼這被刪除,我怎樣才能實現相同的功能?
我想出了一個解決方案。將this.disable()添加到我的處理程序的末尾會禁用它被觸發後的航點,從而防止它再次被調用。我真的認爲這應該記錄。
我知道一個答案已被標記爲正確的,但我想擴大超出一個簡單的評論。
3.0,作爲主要版本,做出了重大改變。其中之一是刪除triggerOnce
。它在changelog中被注意到。在destroy docs中也提到了在處理程序結束時使用destroy
作爲舊triggerOnce
的替代方式的調用。
此前,triggerOnce
與調用destroy
並不完全相同,因爲所有Waypoint方法都是在jQuery對象上調用的。這些jQuery對象中的元素可能會附加多個路標,但創建後無法將它們分開。如果你叫destroy
,那個元素上的所有路點都被銷燬了。然而,triggerOnce
選項在幕後以個人航點爲基礎。現在,3.0直接返回Waypoint類的實例,並且處理程序中的this
是對Waypoint實例的引用而不是元素,因此triggerOnce
與調用this.destroy()
之間沒有區別來結束處理程序。所以代碼被刪除了。
感謝您提供額外的細節,並感謝您爲創建一個奇妙的jQuery插件。不過,我只是想說明,在嘗試發佈triggerOnce之前,我嘗試了很長時間的搜索。搜索引擎是一件很難的事,因爲Waypoint已經有一段時間了,在那些仍然被Google索引但現在重定向到新主頁的頁面上有很多關於triggerOnce的提及。我認爲關於從2x到3x遷移技巧的文檔中的專用頁面將非常有益。再次感謝! – Yaron
亞龍,我同意可能需要遷移指南。它最初是作爲另一個指南頁面在石板上,但我決定推遲,直到我看到人們在遷移時遇到的實際問題。像這個問題一樣。 :) – imakewebthings
@imakewebthings如果我像這樣'$ this.waypoint(counterUpper,{offset:'100%',triggerOnce:true});'?破壞函數在哪裏適合? –
如果你需要禁用jQuery的航點(3.0):
$('.my-waypoint').waypoint(function(direction){
// Do some stuff
this.destroy();
});
我用'this.destroy'在處理程序結束,而不是因爲(對我來說)我知道我永遠不會使用無論如何,這個例子。 – Norris