/ / Es wird versucht, separate Klickfunktionen mit jquery basierend auf einem Array auszugeben - Javascript, jquery, Arrays

Der Versuch, separate Klickfunktionen mit jquery basierend auf einem Array auszugeben - Javascript, jquery, Arrays

Ich habe dieses Array, das basierend auf automatisch generiert wirdBilder in einer Galerie. Ich muss ihnen alle separaten Klickereignisse geben, die Variablen von einem anderen Array beim Klicken ausgeben, damit ich sie an einen String übergeben kann, der an das Ende einer URL angehängt ist, um sie an pinterest zu senden. Der Teil, der mich aus dem Gleichgewicht bringt, ist das Klick-Ereignis.

Hier ist der Code, bisher warnt er nur den letzten TeilIch möchte, dass bei jedem Klick das erste Array für den ersten Klick und die zweite Array-Position für den zweiten Klick separat gemeldet werden.

Dies ist das entsprechende Array console.logged, es sind die einzelnen Klassen, auf die die verschiedenen Schaltflächen klicken.

[".btnPinIt , 0", ".btnPinIt , 1"]

for (var j = 1; j < clickArray.length; j++){
console.log(clickArray[j]);

$(clickArray[j]).click(function() {
alert(j);
});

}

Antworten:

1 für die Antwort № 1

Ein Problem ist dein j liegt für alle Handler im gleichen Bereich, hat also den Wert clickArray.length Wenn das Klicken auftritt, sollten Sie dafür jedoch keine separaten Handler benötigen. Verwenden Sie Datenattribute für die Elemente und holen Sie sie von einem einzelnen Handler ab.

Eine andere ist, dass Sie das Array von 1 anstelle von 0 indizieren.

Sie benötigen auch ein Array mit gültigen Selektoren, da Sie derzeit ein Array mit ungültigen jQuery-Selektoren haben.

z.B. Angenommen, Sie haben eine Reihe von ID-Selektoren:

  clickArray = ["#btnPinIt1",
"#btnPinIt2"]

// save the index values on the elements
for (var j = 0; j < clickArray.length; j++){
$(clickArray[j]).attr("data-val", j+1);
}

// Use a startswith selector (in this example) to handle the clicks

$("[id^=btnPinIt]").click(function() {
alert($(this).data("val"));
});

Noch einfacher wäre es, Ihre Klasse zu verwenden und sie in der Reihenfolge von 1 bis n zu indizieren:

  $(".btnPinIt").each(function(e, i){
$(this).attr("data-val", i+1);
}).click(function() {
alert($(this).data("val"));
});

Dies verkettet auch die click und each.