2010-12-15 5 views
8

웹 사이트의 일부 요소를 그리기 위해 Raphael을 사용하고 있습니다. 요소에는 직사각형, 선 (경로)이 포함됩니다. 경로 요소에 id를 지정하고 해당 행의 onclick 이벤트에 액세스하려고합니다. 그러나 나는 이드를 경계 할 때 아무것도 보이지 않는다. 다음은 코드 스 니펫Raphael에서 요소의 id 속성에 액세스하는 방법

function createLine() 
{ 
    var t = paper.path("M" + xLink + " " + yLink +"L" + linkWidth + " " + linkHeight); 
    t.attr('stroke-width','3'); 
    t.attr('id','Hello'); 
    t.node.onclick = processPathOnClick; 
} 

function processPathOnClick() 
{ 
    alert($(this).attr("id")); 
} 

누구든지 위의 코드의 문제점을 알려주십시오. 모든 포인터가 도움이 될 것입니다.

감사

대신 $(t.node).attr('id','Hello');을 쓰고 싶지 않아
function createLine() 
{ 
    var t = paper.path("M" + xLink + " " + yLink +"L" + linkWidth + " " + linkHeight); 
    t.attr('stroke-width','3'); 
    t.attr('id','Hello'); 
    $(t.node).click(processPathOnClick); 
} 

function processPathOnClick() 
{ 
    alert($(this).attr("id")); 
} 

답변

14

당신이 확실 JQuery와

를 사용하여 핸들러를 설정
+0

도와 줬지만, 작동하지 않았다. – sgbharadwaj

+15

이것은 작동해야하지만 사람들이 노드의 id를 설정하기 위해 jquery를 사용하는 이유에 대해 당황 스럽다. 그걸't.node.id = 'Hello''와 비교하십시오. –

+0

@sgbharadwaj 허, 방금 시도해 봤는데 저에게 효과적이었습니다. 핸들러에서'$ (this.node) .attr ('id')'로 재 작성 했습니까? 어쨌든, 말했듯이, 처리기에't.node.it = "Hello"'와'alert (this.id)'를 쓸 수 있습니다 - – Zecc

2

시도?

업데이트 : 누군가이 답변을 downvoted. 그리고 진정으로 이드를 설정하는 의무가 있다고 느껴지는 이드는별로 좋지 않습니다.

t.node.id = 'Hello'; 

나는이 대답에 대한 자신의 의견을지지하지 않고 Juan Mendes에게 신용 할 수있는 방법이 있었으면 좋겠습니다.

+1

안녕 주안, 처리기를 설정하지 않았습니다. 설정 속성을 t.node.setAttribute ('id', pathId)로 변경했습니다. alert ($ (this) .attr ('id'))에 액세스하려면; – sgbharadwaj

+0

글쎄, 그러면 Raphael 오브젝트의 id를 설정해도 노드에 ID가 설정되지 않는다는 것을 알 수 있습니다. id를 설정하기 위해 jquery를 사용할 필요가 없습니다. 당신의 코드는't.node.id = 'my-id' '를 사용하면 훨씬 간단해진다. 핸들러는 단지'alert (this.id)'를 사용할 수있다. –

+0

도움을 주신 덕분에 – sgbharadwaj

3

이 시도 :

function createLine() { 
    var t = paper.path("M" + xLink + " " + yLink +"L" + linkWidth + " " + linkHeight); 
    t.attr('stroke-width','3'); 
    t.id = 'Hello'; 
    t.node.onclick = processPathOnClick; 
} 

function processPathOnClick() { 
    alert($(this).id); 
    alert(this.id); // This should work too... 
} 

을 기본적으로 당신이 당신의 라파엘 라인 인스턴스 변수 "t"의 "아이디"라는 새로운 속성을 만들 수 있습니다. 그것은 제 의견으로는 해킹의 일종이지만 트릭을 잘합니다.

관련 문제