2017-06-26 6 views
2

Ich habe den folgenden Code:Increment-ID-Wert in jQuery-Selektor

$("#cc").on('hidden.bs.modal', function (e) { 
    $("#cc iframe").attr("src", $("#cc iframe").attr("src")); 
}); 

Ich mag würde, dass bis zu 10 verschiedene divs in meinem Markup anzuwenden (#cc-1, #cc-2, #cc-3, etc ...).

Ich habe versucht, eine for Schleife so ich den gleichen Code 10-mal neu schreiben müssen nicht durch die folgenden Schritte ausführen:

for (var i = 1; i < 11; i++) { 

    $('"#cc-' + i + ' iframe"').on('hidden.bs.modal', function (e) { 
     $('"#cc-' + i + ' iframe"').attr("src", $('"#cc-' + i + 'iframe"').attr("src")); 
    }); 

} 

Die Sache ist, ich weiß nicht, wie die Variable verketten i in meinem jQuery-Selektor mit allem anderen.

Bitte beachten Sie, dass ich die iframe innerhalb jeder #cc- div. Zielen muss. Das ist der Teil, mit dem ich Probleme bekomme. Beim Hinzufügen der iframe nach der Verkettung der mit der Variablen i bekomme ich einen Syntaxfehler.

Ich hoffe, ich habe mich klar gemacht. Irgendwelche Hinweise darauf, was ich falsch mache?

+1

Warum die doppelten Anführungszeichen überall in Ihrem zweiten Beispiel, sie erstellen ungültige Selektoren. '$ ('# cc-' + i + 'iframe')' – Steve

+0

Ich versuchte ohne doppelte Anführungszeichen '$ ('# cc-' + i + 'iframe');' und hatte auch kein Glück. :( –

+0

ehrlich gesagt wäre es viel einfacher, eine Dummy-CSS-Klasse zu Ihren HTML-Tags hinzuzufügen und Sie Handler zu dieser Klasse über jQuery – derloopkat

Antwort

4

Sie sollten in der Lage sein, eine Variable in einem Selektor so zu verketten, wie Sie es tun, Sie müssen jedoch keine Zitate hinzufügen. diese

Wechsel:

$('"#cc-' + i + ' iframe"') 

Um dies:

$('#cc-' + i + ' iframe') 

auch vergessen, Sie einen Platz vor Ihrer iframe Klasse hinzuzufügen.

ändern diese:

$('"#cc-' + i + 'iframe"') 

zu diesem:

$('#cc-' + i + ' iframe') 

komplette Wechsel:

for (var i = 1; i < 11; i++) { 

    $('#cc-' + i + ' iframe').on('hidden.bs.modal', function (e) { 
     $('#cc-' + i + ' iframe').attr("src", $('#cc-' + i + ' iframe').attr("src")); 
    }); 

} 
+0

Danke für die Antwort. Ich habe das schon vorher ausprobiert und tatsächlich gibt die Konsole keinen Syntaxfehler zurück. Wenn ich jedoch versuche, zu sehen, was ich bekomme, wenn ich 'console.log' zu diesem Ausdruck (' $ ('# cc' + i + 'iframe') ') mache, bekomme ich folgenden Text: ' '[iframe , prevObject: r.fn.init (1)] ' Nun, was ich wissen wollte, war, wie man die Variable mit den anderen Sachen richtig verkettet. Ich denke, das löst es. –

+0

@LuisCarlosPando Aus meiner Sicht gibt es keine spezielle Logik zum Verketten einer Variablen mit einem Selektor, außer vielleicht, wenn die Variable Sonderzeichen enthält, die die Abfrage unterbrechen würden. Sie müssen nur sicherstellen, dass die Zeichenfolge eine gültige Abfrage ausgibt – Tony

+0

@LuisCarlosPando Wenn dies Ihre Frage beantwortet markieren Sie es als richtig, um die Frage zu schließen. – Tony

0
for (var i = 1; i < 11; i++) { 
var mydiv="#cc-"+i; 
    $("mydiv iframe").on('hidden.bs.modal', function (e) { 
     $('"#cc-' + i + ' iframe"').attr("src", $('"#cc-' + i + 'iframe"').attr("src")); 
    }); 

} 
+0

Vielen Dank Osama, ich fand dies das gleiche Ergebnis wie Tonys Antwort oben. –

+0

Ja das ist richtig Ich benutze nur eine Variable, so dass die Aussage innerhalb des Selektors leicht zu lesen ist und mit weniger einfachen und doppelten Quetos die zwei Wege mit dem gleichen Ergebnis – Osama