Je veux sélectionner une entrée avec le même nom, mais obtenir une erreur de syntaxe:
$("input[name=$(this).prop("name")]");
Mais je suis capable de me ficeler $(this).prop("name")
.
MODIFIER:
Merci pour toutes vos réponses. Je pense qu'ils travaillent tous. Mais est-ce que quelqu'un pourrait expliquer pourquoi les deux signes plus au début et à la fin rendent le code jQuery analysé dans la chaîne? Référence sera appréciée, merci
EDIT2:
Je sais que le signe plus est pour la concaténation de chaînes. Mais dans ce cas, rien n’est avant le premier + ou après le deuxième +. Alors, qu'est-ce qui est concaténé ici? Désolé si la question semble trop naïve
Réponses:
4 pour la réponse № 1Ce devrait être ceci:
$("input[name=""+$(this).prop("name")+""]");
jQuery n’analyse pas le code jQuery sur des chaînes. Pour l’exécuter, vous devez placer jQuery prop()
fonctionner en dehors de la chaîne.
3 pour la réponse № 2
Mais est-ce que quelqu'un pourrait expliquer pourquoi les deux signes plus au début et à la fin rendent le code jQuery analysé dans la chaîne?
Regardons cela étape par étape.
Commençons par l’approche originale:
$("input[name=$(this).prop("name")]");
La fonction "$" (qui est un alias pour jQuery) sera appelée avec un argument de chaîne:
"input[name=$(this).prop("name")]"
jQuery va analyser cette chaîne et l’interpréter comme ceci:
/*
Okay, I need to find an <input>
that has an attribute "name",
and the value of that attribute has to be, literally, "$(this).prop("name")".
So, I"m looking for something that looks like this: */
<input name="$(this).prop("name")" />
Cependant, ce que vous vouliez probablement trouver ressemblait plus à ceci:
<input name="some name, actually" />
(et "un nom, en fait" serait dans la propriété name de $ this au moment où vous effectuez l'appel d'origine)
Regardons maintenant la nouvelle approche:
Quand tu écris
$("input[name=" + $(this).prop("name") + "]");
Vous construisez une partie de la chaîne à partir de votreObjets JavaScript. Vous prenez $ (this) (qui est un objet jQuery), appelez sa fonction "prop" pour récupérer une propriété appelée "nom" et utilisez le résultat de cette fonction dans la nouvelle requête. Donc, si $ (this) .prop ("name") renvoie "AWESOME", vous demandez à jQuery de trouver quelque chose qui ressemble à ceci:
<input name="AWESOME" />
Cela devrait être plus comme ce que vous cherchiez!
2 pour la réponse № 3
Vous cherchez littéralement un input
élément avec le nom $(this).prop("name")
. Ce que vous voulez faire, c'est écrire quelque chose comme ceci:
$("input[name="+$(this).prop("name")+"]");
2 pour la réponse № 4
Essayez quelque chose comme ça:
$("input[name=" + $(this).prop("name") + "]");