Je ne suis pas sûr si j'ai besoin de la fonction each()
ici ou si je peux le faire en quelque sorte avec this
. J'essaie de changer l'attribut src basé sur l'instruction if
. Cela fonctionne sauf qu'il les passe à hifi1.jpg
. Comment est-ce que je fais en sorte que chaque valeur de img
data-websrc
s'applique à elle-même?Chacun, attr, ou ceci?
HTML:
<img class="airsrc" src="lofi1.jpg" data-websrc="hifi1.jpg" alt="example1">
<img class="airsrc" src="lofi2.jpg" data-websrc="hifi2.jpg" alt="example2">
JS:
jQuery(document).ready(function($) {
var airsrc = $('.airsrc');
airsrc.each(function() {
if (Modernizr.mq('(min-width:480px)')) {
var src = $(this).data('websrc');
airsrc.attr('src', src);
}
});
});
Mise à jour: Solution:
jQuery(document).ready(function($) {
if (Modernizr.mq('(min-width:480px)')) {
$('.airsrc').each(function() {
var $this = $(this);
var src = $this.data('websrc');
if (src != '') {
$this.attr('src', src);
}
});
}
});
Cela fonctionne dans les navigateurs qui prennent en charge les attributs des données personnalisées, qui, de mes tests, je l'ai trouvé pour signifier FF/Chrome/Opera/Safari. Peut-être IE9. Je pense que getAttribute peut être utilisé pour IE (plus ancien).
Pourquoi pensez-vous que '$ (this) .data (« websrc »)' renvoie la valeur de l'attribut 'data-websrc' de l'image (qui est un attribut invalide de toute façon, mais c'est une question différente)? –
'each',' attr' et 'this' sont complètement orthogonaux. –
La raison pour laquelle le code est bogué est que vous appelez 'airsrc.attr()' au lieu de '$ (this) .attr()' dans votre boucle each(), donc il définit l'attribut sur tout dans la collection comme opposé à l'élément spécifique. – Chris