2013-06-10 17 views
5

Ho un menu sulla mia pagina e sto attualmente scrivendo lo script che imposta tutti gli eventi click per i pulsanti del menu. Ogni pulsante chiamerà il proprio metodo, quindi deve essere impostato in modo esplicito.Multiple on() o switch() all'interno di uno()

La mia domanda, molto semplicemente, è quale dei seguenti due metodi è meglio utilizzare in questa situazione:

$(document).on('click','#menu .button', function(){ 
    switch($(this).attr('id')){ 
     case 'foo_button': 
      // Set the event for the foo button 
     break; 
     case 'bar_button': 
      // Set the event for the bar button 
     break; 
     // And the rest of the buttons 
    } 
}); 

Oppure:

$(document).on('click','#foo_button',function(){ 
    // Set the event for the foo button 
}); 
$(document).on('click','#bar_button',function(){ 
    // Set the event for the bar button 
}); 
// And the rest of the buttons 

avrei pensato opzione 1 sarebbe meglio come si imposta solo un evento ... Tuttavia, questo evento sarà chiamato su ogni clic dei pulsanti del menu, quindi è difficile sapere quale sarebbe più efficiente.

+1

jQuery fa già esattamente questo. – SLaks

+0

@SLaks Come in jQuery applica un'istruzione switch? –

risposta

2

Se la funzione di gestione è veramente diversa per ciascun ID di pulsante diverso, ciascuno di essi deve essere registrato utilizzando la propria chiamata a on().

Probabilmente non farà una notevole differenza nelle prestazioni del tuo codice, ma renderà le cose molto più facili da leggere per altri sviluppatori (o anche te stesso per la manutenzione) in futuro.

+0

Brillante, questo è quello che volevo sapere +1. Potresti forse spiegare perché? –

+0

Impressionante, grazie per le informazioni, accetterò quando posso :-) –

Problemi correlati