2014-12-23 1 views
5

최근에 프로젝트에서 jquery-waypoints를 2.x에서 3.x로 업그레이드했으며 코드가 많이 파손되었음을 발견했습니다. 내 핸들러 내의 $(this)에 대한 모든 참조는 $(this.element)으로 변경되어야합니다. 일단 문제의 원인이라고 생각되면 수정하기가 쉽습니다.Waypoints 3.0의 triggerOnce 옵션은 어떻게 되었습니까?

웨이 포인트가 여러 번 발사되는 것을 방지하는 triggerOnce 옵션에 어떤 현상이 있었는지 파악할 수 없었습니다. 왜 이것이 삭제되었는지와 같은 기능을 어떻게 얻을 수 있습니까?

답변

2

나는 해결책을 찾아 냈다. 내 처리기의 끝에 this.disable()을 추가하면 해고 된 후 웨이 포인트가 사용 중지되어 다시 호출되지 않습니다. 정말 이것이 문서화되어야한다고 생각합니다.

+1

나는'사용을 핸들러의 말 대신 때문에 (내 경우) 내가 사용하지 않을거야 알고에서 this.destroy' 어쨌든 다시 그 인스턴스. – Norris

6

답변이 이미 올바른 것으로 표시되었지만 간단한 설명을 넘어서 확장하고 싶습니다.

3.0은 주요 변경 사항으로 주요 변경 사항입니다. 그 중 하나가 triggerOnce을 삭제했습니다. changelog에 기록되어 있습니다. 의 대안으로 처리기의 끝에 destroy을 사용하는 destroy docs에서도 언급되었습니다.

이전에 은 모든 웨이 포인트 메소드가 jQuery 객체에서 호출 되었기 때문에 destroy을 호출하는 것과 완전히 같지 않았습니다. 이러한 jQuery 객체의 요소에는 여러 개의 경유 점이 첨부되어있을 수 있지만 일단 작성되면 분리 할 방법이 없습니다. destroy에게 전화하면 해당 요소의 모든 웨이 포인트가 파괴되었습니다. 그러나 triggerOnce 옵션은 장면 뒤에서 개별 웨이 포인트 기반으로 작업했습니다. 3.0은 Waypoint 클래스의 인스턴스를 직접 반환하고 핸들러 내의 this은 요소 대신 Waypoint 인스턴스에 대한 참조이므로 triggerOnce과 핸들러를 종료하는 데는 this.destroy()을 호출하는 것과 차이가 없습니다. 그래서 코드가 삭제되었습니다.

+1

환상적인 jQuery 플러그인을 작성해 주셔서 감사합니다. 그러나 나는 단지 여기에 게시하기 전에 triggerOnce에 대한 언급을 위해 꽤 오랜 동안 검색을 시도했다는 점에 유의하고 싶었습니다. Waypoints가 잠시 주변에 있었기 때문에 검색하기가 어려웠으며 아직 Google에서 색인을 생성했지만 새 홈페이지로 리디렉션되는 페이지에 triggerOnce의 언급이 많이 있습니다. 팁에 대한 문서의 전용 페이지는 2x에서 3x로 마이그레이션하는 것이 큰 도움이 될 것이라고 생각합니다. 다시 한 번 감사드립니다! – Yaron

+1

Yaron, 마이그레이션 가이드가 필요할 수도 있습니다. 그것은 원래 다른 가이드 페이지로 슬레이트에 있었지만 나는 사람들이 이주에서 겪었던 실제 문제를 볼 때까지 기다리지 않기로 결정했습니다. 이 문제는 여기에 있습니다. :) – imakewebthings

+0

@imakewebthings 내가 '$ this.waypoint (counterUpper, {offset :'100 % ', triggerOnce : true})와 같은 웨이 포인트를 호출하면 어떻게 될까요? 파괴 기능은 어디에서 적합합니까? –

0

당신은 jQuery를 웨이 포인트 (버전 3.0) 해제해야하는 경우 :

$('.my-waypoint').waypoint(function(direction){ 
    // Do some stuff 
    this.destroy(); 
});