2013-02-17 4 views
0
$(this).click(function() { 
    clicked($(this)); 
}); 

Comment réduire ce code à une ligne?Réduire la taille du clic()

Essayé cela - ne fonctionne pas:

$(this).click(clicked(this)); 

Il sera utilisé ensuite comme ceci:

function clicked(element) { 
    element.css('...'); 
     // some other code 
} 
+0

Eh bien, '$ (this) .click (function() {cliqué ($ (this));});' ... mais sérieusement, pourquoi? – JJJ

+0

@Juhana à cause des méthodes d'interpolation – Jasper

+0

Pourriez-vous donner un exemple? Je ne sais pas quelle méthode d'interpolation signifie dans ce contexte. – JJJ

Répondre

1

Vous pouvez passer directement la fonction clicked:

$(this).click(clicked); 

mais vous devrez modifier votre fonction clicked pour envelopper l'élément.

function clicked() { 
    $(this).do("whatever") 
} 

En ce qui concerne votre question mise à jour, vous pouvez avoir clicked retourner une fonction si vous voulez.

function clicked(element) { 
    return function() { 
     element.css('...'); 
     // some other code 
    } 
} 

Alors vous pouvez faire ceci:

$(this).click(clicked($(this))); 

Mais je personnellement changer votre fonction clicked travailler comme la première version.

+0

fonctionne comme un charme, merci! – Jasper

Questions connexes