J'essaye de créer dynamiquement des éléments et donc de leur donner dynamiquement de la valeur. Donc si je veux accéder à un élément en utilisant une valeur qui est stockée dans une variable, comment faire?
J'ai essayé d'utiliser $ ("# '" + g + "'") code > mais cela n'a pas fonctionné
var text1 = '<div id="' + g + '"></div>';
var text2 = '<input data-checkbox="' + g + '" type="checkbox" style="display:none;"/><h3 data-header="' + g + '" style="display:inline-block;">Timer' + g + ' </h3><input data-input="' + g + '" type="text" style="display:none;"/>';
var text3 = '<span data-minutes="' + g + '">00</span>:<span data-seconds="' + g + '">00 </span><button data-start="' + g + '" >start</button><button data-stop="' + g + '" style="display:none;">stop</button><button data-clear="' + g + '" style="display:none;">clear</button>';
$('#header').append(text1);
$("#'"+g+"'").append(text2, text3);
3 Réponses :
Ceci devrait être tout ce dont vous avez besoin:
$("#" + g)
Le fait qu'il s'agisse d'une chaîne est déjà implicite.
Vous avez juste une petite erreur.
Vous devez essayer comme ceci $ ("#" + g) .append (text2, text3);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div id="header"></div>
var g = "data";
var text1 = '<div id="' + g + '"></div>';
var text2 = '<input data-checkbox="' + g + '" type="checkbox" style="display:none;"/><h3 data-header="' + g + '" style="display:inline-block;">Timer' + g + ' </h3><input data-input="' + g + '" type="text" style="display:none;"/>';
var text3 = '<span data-minutes="' + g + '">00</span>:<span data-seconds="' + g + '">00 </span><button data-start="' + g + '" >start</button><button data-stop="' + g + '" style="display:none;">stop</button><button data-clear="' + g + '" style="display:none;">clear</button>';
$('#header').append(text1);
$("#"+g).append(text2, text3);
Vous êtes sur le point de réussir; les commentaires essaient de vous dire que vous ne formez pas correctement le sélecteur.
Le sélecteur d'un identifiant doit être une chaîne de la forme:
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div id="header">Header is here</div>
Dans votre Par exemple, vous avez trop de symboles ', donc l'id de votre variable g sera dans la chaîne, mais entouré de variables. Si g était test-id , vous auriez la chaîne:
var g = 'any-id';
var text1 = '<div id="' + g + '"></div>';
var text2 = '<span>Some other text</span>';
$('#header').append(text1);
$('#' + g).append(text2);... et jQuery peut ' t correspondre à ça.
Tout ce que vous avez à faire est de supprimer ces guillemets, voici à quoi cela pourrait ressembler:
"#'test-id'"
'#id'
Vous insérez aléatoirement des guillemets supplémentaires. Changez-le en
$ ("#" + g)(PS essayezconsole.log ("# '" + g + "'");et vous verrez le problème Comparez-le à quelque chose comme#headersur la ligne ci-dessus dans votre code ... voyez-vous des guillemets simples?$ ("# '" + g + "'")entoure l'ID avec des's supplémentaires. Supprimez-les, et cela devrait fonctionner (au moins la partie sélection)$ ("# g") cela ne fonctionne pas
@MiloniShah Regardez à nouveau mon commentaire. Est-ce ce que j'ai suggéré d'écrire? Portez une attention particulière aux détails. En programmation, chaque caractère que vous tapez est significatif.