2017-08-08 1 views
0

Ich möchte ein Attribut data-pic über Jquery mehrere img Tags hinzuzufügen:Wie erkennt man das aktuelle Element in jQuery?

$('#description img').attr('data-pic', $(this).attr('src')) 

aber, $(this).attr('src') wird nicht funktionieren. Was ich brauche ist der src des aktuellen Elements (img) mit dem ich arbeite.

+0

Verwenden 'console.log (this);' und sehen, was –

+1

@PraveenKumar im console./ ist die Anzeige: Noch besser wäre es, verwenden Sie den Debugger, um zu sehen, was los ist. Es macht keinen Sinn, im Dunkeln mit einer 'console.log' Taschenlampe zu stolpern, wenn Sie * die Lichter * mit dem im Browser integrierten Debugger einschalten können. –

+0

Kann $ (this) .attr() für eine Liste von Elementen nicht verwenden. –

Antwort

3

Sie benötigen eine Callback-Funktion verwenden, um Verwenden Sie das kontextbezogene Schlüsselwort this.

$('#description img').attr('data-pic', function() { 
    return $(this).attr('src'); 
}); 
+0

Oder sogar 'this.getAttribute (" src ") zurückgeben, da hier wirklich kein jQuery-Wrapper benötigt wird. Oder wenn es in Ordnung ist, den aufgelösten Wert anstatt relativ zu erhalten, 'return this.src;' :-) –

+0

@ T.J.Crowder Einverstanden ... ': D' Der zweite ist einfacher, ich bin faul. Ich werde 'this.src' verwenden! ': D' –

4

ich fügen Sie den Attributdaten-pic über jquery Bilder (mehr als 1):

Sie benötigen eine Schleife auf jedem Bild zu verwenden.

+0

Tun Sie es mit' jeder' ist * möglich *, aber ineffizient; Verwenden Sie einfach die Callback-Funktion von Attr. –

0

Um dies zu erreichen, können Sie eine direkte Schleife mit each() verwenden. Dies gibt Ihnen die this Referenz innerhalb der Handler-Funktion:

$('#description img').each(function() { 
    $(this).attr('data-pic', $(this).attr('src')); 
}); 

Alternativ können Sie eine Funktion zu attr() bereitzustellen, die auf jedes Element Instanz arbeiten:

$('#description img').attr('data-pic', function() { 
    return $(this).attr('src'); 
}); 
Verwandte Themen