2016-03-29 5 views
0

Also sagen wir, ich habe eine Variable, slide1.jQuery - Zeichenfolge mit Ganzzahl verketten, um eine bereits vorhandene Variable zu erstellen

var slide1 = $('#slide1');

Wie kann ich eine Zeichenfolge, wie verketten ‚slide‘ mit einer ganzen Zahl, um es gleich zu machen und verhalten sich wie die oben Variable, slide1?

showThis('slide' + 1);

Here is my fiddle, so dass Sie eine verkürzte Version meiner Frage/Verwirrung in Aktion sehen können. Wie Sie sehen werden, versteckt sich das Ergebnis der Verkettung nicht wie erwartet.

Mache ich etwas völlig Tabu?

Vielen Dank im Voraus!

Antwort

0

Ihre showThis() Funktion erfordert ein jQuery-Objekt gehen würde und was Sie anbieten ist eine Zeichenfolge. So sollte der Code tatsächlich diese

showThis($('#slide' + 1));

+1

Ihre Antwort macht am meisten Sinn für das, was ich erreichen möchte. Mein tatsächlicher vollständiger Code verwendet eine Indexvariable und keine statische Ganzzahl (1), die mit der jeweiligen Folien-ID übereinstimmen müsste. Also vielen Dank! :) – sky

-1

Gibt es einen Grund, warum Sie ein Array nicht verwenden können? zB:

var slides = []; 
slides[0] = $('#slide0'); 
slides[1] = $('#slide1'); 
//etc 
showThis(slides[1]); 

oder sogar:

var slides = []; 
for(var i = 0; i< 10; i++){ 
    slides[i] = $('#slide' + i); 
} 
showThis(slides[1]); 
3
var slide1 = $('#slide1'); 
var button = $('#button'); 

button.click(function() { 
    showThis('slide' + 1); 
}); 

function showThis(thisSlide) { 
    alert(thisSlide); 
    $("#" + thisSlide).hide(); 
} 
+0

Dies scheint für meinen Fall zu funktionieren. Was genau macht der $ ("#" + thisSlide) Teil? – sky

+0

Die jquery $ erwartet eine Zeichenkette als Eingabe, also erzeugt sie nur die Zeichenkette '# slide1' und ignoriert die zuvor erstellte Variable. Der einzige Unterschied ist, dass es sich um einen dynamischen Code handelt, unabhängig von der Schaltfläche, auf die Sie klicken, um zu arbeiten. In diesem Fall wäre $ ('# slide1')., Da es keine anderen Knöpfe gibt. Hide() wäre das gleiche – iagowp

+0

Oh, also leitet es nicht wirklich zurück an die Variable, nur das ID-Element selbst. Nicht unbedingt das, was ich auf lange Sicht brauche. Vielen Dank! – sky

1

Sie müssen in das globale Fensterobjekt zu indizieren, wenn Sie es wirklich auf diese Weise tun wollen.

var slide1 = $('#slide1'); 
var button = $('#button'); 

button.click(function() { 
    showThis(window['slide' + 1]); 
}); 

function showThis(thisSlide) { 
    alert(thisSlide); 
    $(thisSlide).hide(); 
} 

aber i mit einer Reihe wie die anderen Plakate haben reagiert mit

0

Sie Eigenschaften eines Objekts mit Strings zugreifen können, aber nicht wirklich Variablen. Wie, Sie haben ein Objekt

var slide = { 
    slide1: $('#slide1'), 
    var button = $('#button'), 
} 

Sie slide1 wie diese

mit einem String zugreifen konnte
showThis(slide['slide'+1]); 

Die Art und Weise Sie versuchen, nicht um eine gültige Methode Variablen zuzugreifen.

Verwandte Themen