2014-12-31 3 views
1

나는 아래 클래스의 수신기를 가지고 있습니다. (웨이 포인트 플러그인을 사용하고 있습니다) .my-class입니다. 그러나 $(this).addClass("hello")을 호출하려고하면 클래스가 있고 수신기를 시작한 개별 div에 클래스를 추가하지 않습니다."this"는 JQuery 리스너의 div를 나타내지 않을 것입니다.

반면에 $(".my-class").addClass("hello")을 함수에 호출하면 hello 클래스를 모든 인스턴스에 .my-class으로 추가합니다. 이는 내가 원하지 않는 것입니다.

나는 this을 어떻게 사용해야하는지 오해 하느냐 (나는 JS를 처음 사용함)? 리스너를 실행하는 단일 div을 참조하면 안되며 따라서 해당 div에 클래스를 추가합니까?

$(".my-class").waypoint(function(e) { 
    $(this).addClass("hello"); 
}) 
+0

잘 모르겠습니다. JSFiddle 게시 시도해 주시겠습니까? – RickyAYoder

+0

'$ (this)'가 무엇인지 정확하게 보려면'console.log ($ (this))'를 시도하십시오. 읽을 시간은 조금 길지만 여전히 도움이됩니다. –

+2

jQuery의 표준은 해당 요소를 'this'컨텍스트로 대체 기능을 실행하는 것입니다. 그러나 .waypoint()는 jQuery 핵심 코드가 아닌 플러그인 코드에서 가져온 것이므로이 규칙을 따르지 않을 수 있습니다. 'this' 컨텍스트는 플러그인이 설정 한 것이 될 것입니다. – ajp15243

답변

6

waypoint를 사용 this는 웨이 객체를 의미한다. 웨이 포인트 오브젝트의 요소는 현재 div입니다. 어쩌면

var waypoints = $('#options-only').waypoint({ 
    handler: function(direction) { 
    notify(this.element.id + ' hit') 
    } 
}) 

은 그래서 당신은 $ (this.element)를 수행해야 할 수 있습니다, 또는 this.element : 그래서 당신은 API 문서에서

$(".my-class").waypoint(function(e) { 
$(this.element).addClass("hello"); 
}) 
+0

의미가 있습니다. 나는 할 수있을 때 받아 들일 것이다. – ujvl

+1

@ uj- - 여기에 jQuery Extension을 사용하는 방법에 대한 가이드가 있습니다. http://imakewebthings.com/waypoints/guides/jquery-zepto/ –

+0

감사합니다. – ujvl

0

을 사용할 것, 그들은이 같은 조각을 이미 jquery 객체입니까? 나는 웨이 포인트에 대해 많이 모른다.