0

我有两个非常相似的函数,它们在不同的事件上调用,即第一个在 'onmousedown' 上,第二个在 'onmouseup' 上。我正在考虑将它们合并为一个以提高我的代码的可维护性。我的问题是如何在 switch 语句中找到当前事件?

function update_button_to_idle(id){
var img = 'images/';

switch(id){
    case 'abc1':        
        img += 'enter1.png';
        break;  
    case 'abc2':    
    case 'abc3':
                img += 'play1.png';
        break;
   }
    $('#' + id + ' img').attr('src', img);
}

function update_button_to_active(id){
var img = 'images/';

switch(id){
    case 'abc1':        
        img += 'enter2.png';
        break;  
    case 'abc2':    
    case 'abc3':
                img += 'play2.png';
        break;
   }
    $('#' + id + ' img').attr('src', img);
}
4

2 回答 2

4

不使用onXXX属性,而是使用 jQuery 绑定您的处理程序:

$("selector").on("mousedown mouseup", function(event) {
    update_button(this.id, event.type);
}

然后将您的函数组合成一个update_button()带有两个参数的函数。

于 2013-06-20T04:27:16.273 回答
0

根据事件的注册方式 - 如果您将事件传递给函数,您可以通过调用 event.type 来识别它。例如:

function (event) {
   if (event.type == "mousedown") {

   }

}

在不了解事件如何触发的情况下,很难给你一个完整的答案。

于 2013-06-20T04:20:12.530 回答