2012-11-01 3 views
2

Est-ce la bonne façon de faire les choses? Ici aussi je passe autour this contexte via _this est-il une meilleure façon de le fairePasser le contexte "this" dans jquery

var messages = { 
    getLoadMore : function(_this){ 
     ............... 
    }, 

    getSwappingData : function(_this){ 
     ................. 
    }, 
} 

jQuery('.js-message-swap').live('click', function(){ 
    _this = jQuery(this); 
    messages.getSwappingData(_this); 
    return false; 
}); 
+0

Vous n'avez pas forcément besoin de '_this = jQuery (this);' simplement le passer en argument directement. –

+0

FYI, '.live()' est obsolète, vous devriez utiliser '.on()'. – Barmar

Répondre

1

Ce que vous avez fonctionnera très bien. Une version plus courte serait de passer la référence de la fonction au gestionnaire click, qui appliquera ensuite this à la fonction externe. Essayez ceci:

var messages = { 
    getLoadMore : function() { 
     var $el = $(this); 
     return false; 
    }, 

    getSwappingData : function() { 
     var $el = $(this); 
     return false; 
    } 
} 

jQuery('.js-message-swap').live('click', messages.getSwappingData); 
+0

merci peut var $ el = $ (this); être déclaré dans le constructeur – aWebDeveloper

+0

Que voulez-vous dire par 'dans le constructeur'? –

+0

do classe ont des constructeurs ..... et puis-je écrire le code $ el – aWebDeveloper

0

La seule autre façon de le faire est de passer comme argument à la fonction au lieu d'une variable.

var messages = { 
    getLoadMore : function(_this){ 
     ............... 
    }, 

    getSwappingData : function(_this){ 
     ................. 
    }, 
} 

jQuery('.js-message-swap').live('click', function(){ 
    // Remove this _this = jQuery(this); 
    messages.getSwappingData(jQuery(this)); 
    return false; 
}); 
Questions connexes