2012-03-19 2 views
0

動作しない私はここにjavascriptのバブル関数のプロトタイプメソッドで「E」パラメータが

を停止する電子パラメータを使用したいが、私のコードです:

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); 
    }); 
}); 

しかし、それは動作しません、火かき棒は私に "eは定義されていません"と伝えます

どうすればこの問題を解決できますか?

+0

をなぜ単に' falseを返しません:あなたのmethod次でコードを展開する必要があるで

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

? –

+0

@ShadowWizard:いいえ、私はそれを試しました、e.stopPropagation()を使用しましたが、これは動作します – hh54188

答えて

0

呼び出しサイトで

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

という名前のシンボルが存在しません範囲内のe;したがって、ブラウザは不平を言う。あなたはdocsが言うので、ハンドラに渡されたパラメータがあることを知っている

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

:シンボルが魔法のように表示されませんので、あなたはeがあなたのclickハンドラに渡される最初の引数であることをブラウザに伝えたいですhandlerにはeventObjectが与えられますが、好きなようにパラメータの名前を自由に付けることができます。

0

変更この:これに

$(function(){ 
    $('.node').click(function(){ 
     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')を使用すると、途中でリソースの無駄です。私はコードの中でやったように、あなたは単にidを得ることができます。 ; `

if (e.preventDefault) 
    e.preventDefault(); 
else 
    e.stop(); 
関連する問題