/ Erreur de syntaxe / JQuery lors de la sélection d'un élément du même nom - jQuery

Erreur de syntaxe JQuery lors de la sélection d'un élément du même nom - jQuery

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 № 1

Ce 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") + "]");