2013-10-19 89 views
0

我有一些事件監聽器,所有事情都略有不同。我想要做的就是讓這段代碼更加簡潔,因爲看起來這是一個冗長的表達我想要實現的方式。鑑於每個功能在發生稍微不同的事件後都會發生作用,這是否可能,或者這是我可以期望的最好的?更簡潔的事件監聽器

function action() { 
    var all = $("input, textarea, select"); 

    all.on("focus, keyup", function() { 
    doSomething(); 
    }); 

    all.focus(function() { 
    doSomethingElse(); 
    }); 

    $("input, textarea").keyup(function() { 
    doAnotherThing(); 
    }); 

    $("select").change(function() { 
    doAnotherThing(); 
    doYetAnotherThing(); 
    }); 
} 
+0

這個問題會更好在http://codereview.stackexchange.com/ – Sergio

+0

另一種方法是使用帶有'nodeName'和'event.type'的if語句在一個'.on('keyup,change,focus ',function(){',但我不確定它會導致更少的代碼。 – Sergio

回答

0

類似的東西:

function action() { 
    var all = $("input, textarea, select"); 

    all.on("focus, keyup", function(event) { 
    doSomething(); 

    if(event.type == "focus"){ 
     doSomethingElse(); 
    } 
    }); 

    $("input, textarea").keyup(function() { 
    doAnotherThing(someParams?); 
    }); 

    $("select").change(function() { 
    doAnotherThing(someParams?); 
    doYetAnotherThing(); 
    }); 
} 

function doAnotherThing(someParams?){ 
    //Your code 
} 

也許KEYUP /變更事件可以更succint ...但目前不知道。