2011-02-09 3 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

예제에서는 u가 정확히 무엇을 원하는지 잘 보여줍니다. 하지만 내가 시도하고있는 추가 사항은 evt 외에도 이벤트에 객체를 전달하는 것입니다. 그래서 공공 변수를 사용해야하거나 클로저에 의존해야합니다. –

0

당신은 할 수 있습니다 :

ToggleButton = function(params) { 
     var button = document.getElementById(params.name); 
     if (button) { 
     button.onclick = params.click; 
     } 
} 
관련 문제