2016-07-14 6 views
0

Ich habe ein Image-Tag mit srcset-Attribut mit einem Wert (URL). Jetzt muss ich es auch für src Attribut holen und erzeugen.So holen Sie die URL img srcset mit jquery

$('img').attr('srcset') 

Der obige Code funktioniert nicht und gibt undefined zurück.

<img srcset="http://s7d2.scene7.com/is/image/Hod/Mobile600x160?$600x160$" alt=""> 

Ich brauche oben srcset Wert ("http://s7d2.scene7.com/is/image/Hod/Mobile600x160? $ 600x160 $") und fügen Sie den gleichen Wert für src-Attribut zu holen. Freundlich helfen.

Vielen Dank im Voraus.

+0

Wenn Sie nur etwas mit dem ‚srcset‘ Wert tun müssen, ist die Antwort schon ganz gut zur Verfügung gestellt sind. Aber wenn Sie das Bild 'src' durch JavaScript ändern möchten, sollten Sie die HTML-Spezifikation [hier] (https://html.spec.whatwg.org/multipage/embedded-content.html#attr-img -srcset) die Spezifikation und [hier] (https://responsiveimages.org/) eine kleine Erklärung, die nahe legt, 'srcset' in Kombination mit dem Attribut 'sizes' zu verwenden. –

Antwort

1

Sie müssen warten, bis die dom geladen ist: $(document).ready(function(){})

$(document).ready(function(){ 
 
    var img = $('.img'); 
 
    img.each(function(){ 
 
    this.src = this.srcset; 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<img class="img" srcset="http://s7d2.scene7.com/is/image/Hod/Mobile600x160?$600x160$" alt=""> 
 
<img class="img" srcset="http://s7d2.scene7.com/is/image/Hod/Mobile600x160?$600x160$" alt="">

Sie können immer noch zurück zu $('img') statt $('.img') ändern, aber bewusst sein, dass dann all img-Tag vorangetrieben werden.

+0

Ein einfaches 'this.src = this.srcset' wäre genug. Keine Notwendigkeit, zwei fullblown jQuery-Objekte nur für das Lesen und Zuweisen eines Attributwertes zu instanziieren :) – Andreas

+0

$ ('img'). Prop ('srcset') gibt "" – vsm

+0

zurück Sie sind absolut richtig @Andreas – fehrlich

0

HTML

<img src="http://jonathonleathers.com/images/germany-src.jpg" 
    srcset="http://jonathonleathers.com/images/germany-1x.jpg 1x, 
      http://jonathonleathers.com/images/germany-2x.jpg 2x" 
    alt="Germany" 
    id="photo-full"> 

<div class="thumbs"> 
    <img src="http://jonathonleathers.com/images/germany-src-thumb.jpg" 
     srcset="http://jonathonleathers.com/images/germany-1x-thumb.jpg 1x, 
       http://jonathonleathers.com/images/germany-2x-thumb.jpg 2x" 
     alt="Germany" 
     data-full-src="http://jonathonleathers.com/images/germany-src.jpg" 
     data-full-srcset="http://jonathonleathers.com/images/germany-1x.jpg 1x, 
       http://jonathonleathers.com/images/germany-2x.jpg 2x"> 
    <img src="http://jonathonleathers.com/images/hawaii-src-thumb.jpg" 
     srcset="http://jonathonleathers.com/images/hawaii-1x-thumb.jpg 1x, 
       http://jonathonleathers.com/images/hawaii-2x-thumb.jpg 2x" 
     alt="Hawaii" 
     data-full-src="http://jonathonleathers.com/images/hawaii-src.jpg" 
     data-full-srcset="http://jonathonleathers.com/images/hawaii-1x.jpg 1x, 
       http://jonathonleathers.com/images/hawaii-2x.jpg 2x"> 
</div> 

JS

var $src = $(this).attr('data-full-src'); 
    var $srcset = $(this).attr('data-full-srcset'); 
    var $alt = $(this).attr('alt'); 
    $('#photo-full').attr('src', $src); 
    $('#photo-full').attr('srcset', $srcset); 
    $('#photo-full').attr('alt', $alt); 

für refrence http://codepen.io/jtleathers/pen/IGytf

+1

Was ist mit all diesen unnötigen Attributen und ihren Werten? – Andreas

1

Verwenden Sie dies funktioniert es für mich! wie XzenTorXz sagte oben mit einer kleinen Änderung:

$(document).ready(function(){ 
    var img = $('img[srcset]'); 
    img.each(function(){ 
    this.src = $(this).attr('srcset'); 
    }); 
}); 
+0

Funktioniert nicht mit mehreren Bildern (siehe OP-Kommentar) – Andreas

+0

$ ('img') .attr ('srcset') gibt keinen scrset-Wert zurück. – vsm

+0

Nein, tut es nicht. '.attr (...)' gibt den Wert des ersten Elements in der Menge der übereinstimmenden Elemente zurück. Mit diesem Code wird jedes Bild den selben 'src' Wert haben (nämlich' srcset' vom ersten Bild) – Andreas

-1
jQuery(document).ready(function($) { 
    jQuery('.woocommerce-product-gallery__image img').click(function(e) { 
    e.preventDefault(); 
    var src = jQuery(this).attr('src'); 
    var srcset = jQuery(this).attr('srcset'); 
    var alt = jQuery(this).attr('alt'); 
    alert(srcset); 
    jQuery('.images .zoom .wp-post-image').attr('src', src); 
    jQuery('.images .zoom .wp-post-image').attr('srcset', srcset); 
    jQuery('.images .zoom .wp-post-image').attr('alt', alt); 
    }); 
}); 
+0

Code-only Antworten sind im Allgemeinen entmutigt, da sie niemandem helfen, der mit Ausnahme des OP auf diese Antwort stößt. Weitere Informationen finden Sie unter [Antwort] (https: // stackoverflow.com/help/how-to-answer) sowie [this] (https://meta.stackexchange.com/a/148274), um zu sehen, warum dies der Fall ist und was eine gute Antwort darstellt. Vielleicht fügen Sie eine Erklärung hinzu, was dieser Code tut. – stybl

+0

Entschuldigung dafür, aber ein durchschnittlicher Programmierer kann es leicht verstehen. –

Verwandte Themen