Beim Lernen von Javascript und Jquery bin ich durch Seiten von Google gegangen, kann das aber anscheinend nicht zum Laufen bringen. Grundsätzlich versuche ich, inneres HTML von Klassen zu sammeln, Jquery scheint als einfaches Javascript vorgeschlagen zu werden, in einer document.write.
Damit wird nur die erste Klasse unter document.write angezeigt. Wie kann ich alles zusammen zeigen wie Block OneBlock TwoBlock Three? Mein ultimatives Ziel dabei ist es, sie durch Kommas getrennt zu zeigen, wie Block Eins, Block Zwei, Block Drei, Block Vier. Danke, es tauchen viele relevante Fragen auf, aber keine scheint so einfach zu sein.
verwenden document.write ist nicht zu empfehlen.
– Arash Milani
19. Mai 2013 um 0:09 Uhr
Ein möglicher Weg ist die Verwendung .map() Methode:
var all = $(".mbox").map(function() {
return this.innerHTML;
}).get();
console.log(all.join());
NB Bitte nicht verwenden document.write. Zu Testzwecken console.log ist der beste Weg zu gehen.
Das funktioniert definitiv, aber wozu dient der Funktionsaufruf “get()” nach map() ?
– Roneo
13. Mai 2020 um 17:35 Uhr
@roneo Es gibt ein einfaches JS-Array und kein Array-ähnliches Objekt zurück, von dem jQuery zurückgibt map.
– Vision
14. Mai 2020 um 9:15 Uhr
Können Sie das näher erläutern? Ich habe versucht, nach einer Antwort zu suchen, konnte aber keine befriedigende finden. Was ist ein Array-ähnliches Objekt? Gilt die Funktion “get()” für jede Iteration?
– Roneo
14. Mai 2020 um 12:50 Uhr
@roneo Überzeugen Sie sich selbst: jsfiddle.net/b5vpmyh4. Andernfalls, jQuery-Dokumente sagen es ausdrücklich: Da der Rückgabewert ein jQuery-Objekt ist, das ein Array enthält, wird es sehr häufig aufgerufen .get() auf das Ergebnis, um mit einem einfachen Array zu arbeiten.
– Vision
15. Mai 2020 um 12:56 Uhr
@AndrewAnderson this bezieht sich auf das aktuelle DOM-Element für jede Iteration. Die Pfeilfunktion behält also den Bindungskontext nicht bei this ist dort nicht verfügbar. Du kannst den … benutzen zweiter Callback-Parameter stattdessen: var all = $('h3').map((_, element) => element.innerHTML).get().
– Vision
4. Oktober 2021 um 13:26 Uhr
Vielleicht nicht so sauber oder effizient wie die bereits geposteten Lösungen, aber wie wäre es mit der Funktion .each()? Z.B:
Ich möchte das überdeutlich machen Sie haben vier Elemente, die mit diesem Selektor übereinstimmen, also müssen Sie sich mit jedem explizit befassen. Verwenden eq() macht diesen Punkt etwas deutlicher als die Antworten mit mapobwohl map oder each ist das, was Sie wahrscheinlich “im wirklichen Leben” verwenden würden (jquery-Dokumente für eq hier).
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js" ></script>
</head>
<body>
<div class="mbox">Block One</div>
<div class="mbox">Block Two</div>
<div class="mbox">Block Three</div>
<div class="mbox">Block Four</div>
<div id="outige"></div>
<script>
// using the $ prefix to use the "jQuery wrapped var" convention
var i, $mvar = $('.mbox');
// convenience method to display unprocessed html on the same page
function logit( string )
{
var text = document.createTextNode( string );
$('#outige').append(text);
$('#outige').append("<br>");
}
logit($mvar.length);
for (i=0; i<$mvar.length; i++) {
logit($mvar.eq(i).html());
}
</script>
</body>
</html>
Ausgabe von logit Anrufe (nach den ersten vier divAnzeige von ):
4
Block One
Block Two
Block Three
Block Four
Alternative Lösung (Sie können createElement durch ein eigenes Element ersetzen)
var mvar = $('.mbox').wrapAll(document.createElement('div')).closest('div').text();
console.log(mvar);
Um den Eingabewert zu erhalten, können Sie Folgendes tun:
var allvendorsList = $('.vendors').map(function () {
return this.value;
}).get();
11301900cookie-checkJQuery ruft alle Elemente nach Klassennamen abyes
verwenden
document.write
ist nicht zu empfehlen.– Arash Milani
19. Mai 2013 um 0:09 Uhr