2012-03-19 3 views
0

를 작동하지 않는 것은 내 코드입니다 : 그러나함수의 프로토 타입 방식의 '전자'매개 변수 내가 자바 스크립트 거품 여기</p> <p>을 중지 전자 매개 변수를 사용하여 원하는

function test(){} 
test.prototype.method=function(parameter,e){ 
    console.log(parameter) 
    e.preventDefault(); 
} 
var t=new test(); 

$(function(){ 
    $('.node').click(function(){ 
     t.method($(this).attr('id'),e); 
    }); 
}); 

, 그것은 작동하지 않습니다는 방화 광은 "정의되지 않았습니다"라고 말합니다.

이 문제를 어떻게 해결할 수 있습니까?

+0

왜 단순히'false를 반환하지 : 당신의 method 다음과 코드를 확장한다에

$(function(){ $('.node').on('click',function(e) { t.method(this.id,e); }); }); 

? 보통은 같은 효과가 있습니다. –

+0

@ShadowWizard : 아니요, 시도해 보았습니다. e.stopPropagation() 만 사용할 수 있습니다. – hh54188

답변

0

을 (당신은 당신의 기능에 전자를 넣어 잊었) 범위에 e; 따라서 브라우저가 불평합니다. 당신은 docs 말 때문에 핸들러에 전달되는 매개 변수가있을 것이라는 점을 알고있다

$('.node').click(function(e){ // ADDED FORMAL PARAMETER 
    t.method($(this).attr('id'),e); 
}); 

: 기호는 마술 나타나지 않기 때문에, 당신은 eclick 핸들러에 전달 된 첫 번째 인수하는 브라우저를 말하고 싶어 handlereventObject이 주어집니다. 물론 원하는대로 매개 변수의 이름을 자유롭게 지정할 수 있습니다.

0

변경이 : 여기에

$(function(){ 
    $('.node').click(function(){ 
     t.method($(this).attr('id'),e); 
    }); 
}); 

이라는 이름의 기호가없는 전화 사이트

t.method($(this).attr('id'),e); 

에서

$(function(){ 
    $('.node').click(function(e){ 
     t.method($(this).attr('id'),e); 
    }); 
}); 
+0

작동하지만 거품을 방지하지 않습니다. – hh54188

+0

e.preventPropagation() 사용 – Alytrem

0

조금 더 예뻐졌습니다.

$(this).attr('id')을 사용하는 것은 방법으로 자원 낭비입니다. 코드에서했던 것처럼 이드를 얻을 수 있습니다. `;

if (e.preventDefault) 
    e.preventDefault(); 
else 
    e.stop();