Fondamentalement, je veux qu'une fonction agisse sur plusieurs éléments individuellement en fonction de ce qui est cliqué.JS/jQuery - Comment puis-je un numéro d'un ID d'élément et l'utiliser comme une variable dans les fonctions?
J'ai 3 de ces fonctions qui font la même chose:
$("#morelink1, #pic1").click(function() {
var imgHeight = $(".pic").height();
var image = $('#more1').parent('.content').siblings(
'.image');
if ($('#more1').is(":visible")) {
$("#more1").slideUp(200, "linear");
image.height(contHeight);
showtext1();
$("#closemore1").hide();
} else {
$("#more1").slideDown(200, "linear");
image.height(imgHeight);
hidebutton1();
hidetext1();
}
});
Comme vous pouvez le voir, les noms des ID avec lesquels je travaille dans cette fonction tout en fin « 1. » J'ai dupliqué cette fonction pour 2 et 3.
Au lieu de dupliquer, il doit y avoir un moyen d'extraire le numéro de #morelink1
, d'en faire une variable et d'ajouter le numéro à l'ID dans la fonction.
Je voudrais avoir quelque chose comme:
var NUMBER = [get the number from the ID of the element that was clicked];
$("#morelink + NUMBER, #pic + NUMBER").click(function() {
J'ai aussi des fonctions intégrées dans cette fonction - showtext1()
, hidebutton1()
et hidetext1()
. Ceux-ci sont également dupliqués avec juste le nombre changé. J'aimerais pouvoir faire la même chose avec ceux qui sont dans cette fonction. Serait-ce quelque chose comme showtext(NUMBER)
?
J'ai regardé autour de moi et n'arrive pas à trouver un moyen de le faire.
Existe-t-il d'autres façons de faire cela, comme passer un nombre à la fonction?
Merci pour la réponse. Cela ressemble à ce dont j'ai besoin. J'ai vraiment besoin de la valeur, car ce sont comme des liens "lire plus", donc je ne veux pas que tous les éléments se développent. Je suis également tombé sur un codepen de quelque chose de similaire à ce que je veux faire qui utilise '$ ('more'). Each (function()'. Utiliser des classes serait une meilleure approche? – AdamDallas
@AdamDallas: Si le la cible d'une opération donnée dans le gestionnaire de clics peut être identifiée dans le DOM par rapport à l'élément cliqué, vous n'aurez peut-être pas besoin d'analyser la valeur du tout: souvent $ (this) .closest ('un élément parent commun') .find ('élément cible') 'fera l'affaire. C'est à vous de décider, ce qui serait plus facile à maintenir. – David
@AdamDallas: Une meilleure approche pour quoi exactement? Vous ne voulez généralement pas * créer * un gestionnaire de clic dans une boucle. Vous pourriez utiliser des classes pour identifier vos éléments, c'est bien. Mais ne pensez pas à cela en termes d'utilisation de boucles. Utilisez simplement un sélecteur pour identifier les éléments cliquables, puis un gestionnaire de clic unique pour répondre à cet événement. – David