Est-il possible d'appeler une fonction en utilisant les chaînes?
(c'est-à-dire) j'ai une variable var target = 'next';
. En utilisant cette chaîne, je veux appeler la méthode jquery next()
. Dois-je utiliser target + '()'
(c'est un peu idiot) pour appeler next()
?
Je sais que cela peut être fait en utilisant les instructions conditional
. Puisqu'il s'agit d'une chaîne obtenue des utilisateurs, mais il est difficile d'utiliser des instructions conditionnelles pour tout cela.
Dans mon plugin jQuery, les utilisateurs passeront la valeur prev
, siblings
etc comme options, de sorte que les méthodes jQuery respectives seront exécutées.
Comment puis-je implémenter cela?
Si vous souhaitez utiliser jQuery, la réponse est assez élégante. Parce que jQuery est un objet (auquel on peut accéder comme un tableau) - vous pouvez utiliser $("selector")[target]()
.
Exemples:
var target = 'next';
jQuery("selector")[target]();
Cela fonctionnera si vous savez que vous pouvez faire confiance à l'entrée. Cependant, si vous n'êtes pas sûr de cela, vous devez vérifier que la fonction existe avant d'essayer de l'exécuter, sinon vous obtiendrez une erreur.
var target = 'doesNotExist';
if (jQuery.isFunction(target)) {
jQuery('selector')[target]();
}
Dans mon cas, j'avais besoin d'obtenir la valeur d'un attribut rel, puis de l'analyser en tant que fonction, cela a fonctionné pour moi.
$jq('#mainbody form').submit(function(e){
var formcheck = $jq(this).attr('rel');
if (typeof window[formcheck] === 'function'){
formok = window[formcheck]();
e.preventDefault();
}
});
function maincheck(){
alert("Checked");
return false;
}
et le formulaire
<div id="mainbody">
<form action="mainpage.php" method="post" rel="maincheck">
<input type="hidden" name="formaction" value="testpost">
<label>Field 1 <input type="text" name="field1" value="<?=$_POST['field1'];?>"></label><br>
<label>Field 2 <input type="text" name="field2" value="<?=$_POST['field2'];?>"></label><br>
<input type="submit" value="Submit Form">
</form>
</div>