2009-09-25 10 views
0

J'ai quelque chose comme ceci:jquery: la passer à la fonction enfant

$('element.selector').live("click", function(){ 
    run_some_func(); 
}); 

$('element.selector2').live("click", function(){ 
    run_some_func(); 
}); 

maintenant dans la fonction que je dois utiliser $ (this):

function run_some_func() { 
    $(this).show(); 
} 

Comment puis-je obtenir la fonction de sachez que $ (this) est element.selector qui est cliqué?

Merci.

Répondre

4

Vous pouvez utiliser la fonction call pour changer le contexte (définir le mot-clé this) sur la fonction que vous voulez exécuter:

$('element.selector').live("click", function(){ 
    run_some_func.call(this); // change the context of run_some_func 
}); 

function run_some_func() { 
    // the this keyword will be the element that triggered the event 
} 

Et si vous avez besoin de passer des arguments à cette fonction, vous pouvez:

run_some_func.call(this, arg1, arg2, arg3); // call run_some_func(arg1,arg2,arg3) 
              // and change the context (this) 
+0

Merci, c'est exactement le genre de chose que je veux apprendre. – Mark

1

passe pas Pouvez-vous $ (ce) à votre fonction telle que:

$('element.selector').live("click", function(){ 
     run_some_func ($(this)); 
}); 

..et puis

run_some_func(obj){ 
    obj.do_something(); 
}) 
Questions connexes