2011-02-09 20 views
0
// param {name:'name', click : function(ev[,arg1, arg2]){}, focus:function(ev[,arg1, arg2]){} } 
    ToggleButton = function(params) { 
     var btn = document.getElementId(params.name); 
     // how to hook the above click function passed using 
     // params and pass additional params along with it like function(ev[,arg1,arg2]) 
     btn.onclick = params.click; 
    } 

トグルボタンのように動作する拡張リンクボタンを実装しようとしています。今私は上記のようにイベントを添付することができるようにしたいと思いますが、私はどのように私は下のようなコードを楽しむことができるようにボタンにそれを添付する方法を取得していない?イベントに関数をアタッチする方法を教えてください

あなたが行うことができます
new ToggleButton({name: 'toggle1', "click" : function(evt, obj1, obj1){ 
     //function body 
    } 
}); 

答えて

2

私はそれをそのようにします:

<a href="foo.html" id="toggle1">Toogle</a> 


var ToggleButton = function(params) { 
    var btn = document.getElementById(params.id); 
    var evt = 'on' + params.evt; 
    btn[evt] = params.action;  
    return; 
} 

ToggleButton({ 
    id:  'toggle1', 
    evt:  'click', 
    action: function(evt){ 
     var clickedElement = this; 
     alert('My href is '+ clickedElement.getAttribute('href')); 

     // Prevent the browser from following the href, 
     // just in case you set this attribute 
     var e = evt || window.event; 
     e.preventDefault(); 
    } 
}); 
+0

私はイベント関数に複数のパラメータを渡す必要がありますどのように?それは可能ですか? –

+0

あなたは何を正確にしたいですか? – Alex

+0

この例はあなたが望んでいたものと同じです。しかし、私が試みている追加の事は、evtに加えてイベントにオブジェクトを渡すことです。だから私はパブリック変数を使用する必要はありませんか、クロージャに依存する必要があります。 –

0

ToggleButton = function(params) { 
     var button = document.getElementById(params.name); 
     if (button) { 
     button.onclick = params.click; 
     } 
} 
関連する問題