2011-06-11 5 views
6

Raphael .mouseover() 및 .mouseout() 이벤트를 사용하여 SVG의 일부 요소를 강조 표시합니다. 잘 작동하지만 요소를 클릭 한 후 강조 표시를 중지하려고합니다.Raphael JS : 이벤트 제거 방법?

Raphael documentation 나는 발견

이벤트가 "취소"접두어와 동일한 방법으로 이름을 사용하는 바인딩 해제, 즉 element.unclick (F);

그러나이 작업을 수행 할 수 없으며 'f'매개 변수도 이해할 수 없습니다.

이것은 작동하지 않지만, 무엇을합니까 ??

obj.click(function() { 
    this.unmouseover(); 
}); 
+0

질문 (40)과 함께, 나는 그들 이상의 57 %가 같은 올바른 표시 할 수있는 적절한 답변을했다 희망. :) –

+2

아니요, 설명서에 'un'을 사용하여 해당 이벤트를 바인딩 할 수 있다고 나와 있지만 작동하지 않거나 잘못된 작업을하고 있습니다 ... 좋은 질문을 다시 선택하여 답을 선택하고, 하지만 그들 중 대부분은 아직 완전히 대답하지 못했습니다. 제 생각에 ... – Dylan

+0

답변이있는 질문이 많지만 "올바른 답변"이 아닌 질문이있는 경우 다시 질문 할 수 있습니다. 명확하고 간결하며, 지역화되어있어 성공적으로 답변을받을 수 있는지 여부. :) –

답변

5

좋아, 당신이해야 할 것은 unmouseover 요청에 핸들러 함수를 전달할 수 있습니다 :

f에 대해 무엇이다
// Creates canvas 320 × 200 at 10, 50 
var paper = Raphael(10, 50, 320, 200); 
// Creates circle at x = 50, y = 40, with radius 10 
var circle = paper.circle(50, 40, 10); 
// Sets the fill attribute of the circle to red (#f00) 
circle.attr("fill", "#f00"); 
// Sets the stroke attribute of the circle to white 
circle.attr("stroke", "#fff"); 

var mouseover = function (event) { 
    this.attr({fill: "yellow"}); 
} 
var mouseout = function (event) { 
    this.attr({fill: "red"}); 
} 

circle.hover(mouseover, mouseout); 
circle.click(function (event) { 
    this.attr({fill: "blue"}); 
    this.unmouseover(mouseover); 
    this.unmouseout(mouseout); 
}); 

http://jsfiddle.net/GexHj/1/

. 또한 unhover()를 사용할 수 있습니다

circle.click(function (event) { 
    this.attr({fill: "blue"}); 
    this.unhover(mouseover, mouseout); 
}); 

http://jsfiddle.net/GexHj/2/

+0

위대한, 고마워! 그것도 지금은 개체의 배열, 각 개체의 '속성'으로 mouseout 이벤트를 사용하여 일하고있어 ... – Dylan

+0

이 오래된 대답에 대한 질문 : "this.unmouseout (mouseout);" 원래 "mouseout"에 바인딩 된 함수 이름에 의존하는 것 같습니다. 그래서 함수 "myFunc"를 호출 할 수 있었고 "unmyFunc"를 사용하여 바인딩을 해제했습니다. 그러나 그것은 어떤 코드 축소를 위해 끔찍한 것 같지 않습니까? "myFunc"가 "xy"로 최소화되면 "unmyFunc"가 "unxy"로 최소화된다는 보장은 없습니다. 내가 놓친 게 있니? –

+0

'mouseout'은 실제로 문자열 값이 아닌 함수에 대한 참조입니다. 이론적으로 참조로 함수를 전달하는 것이 자바 스크립트의 정상적인 동작의 일부이므로 적극적인 축소는 함수 참조 레이블과 함수 참조 레이블을 식별하고 바꿔야합니다. 어떤 테스트도없이 내 대답, 당신은 문제가 없어야합니다.특정 사육자와 함께 구체적인 시험을 찾으면 저에게 알려주십시오. –