2016-11-14 2 views
0

Извините, но я новичок в программировании jQuery. У меня есть страница с некоторыми изображениями, и я просто хочу окружить их.Цитирование изображений в jQuery

Я хочу, чтобы я переместил первое изображение вместо второго, второе вместо третьего и так далее, до последнего, которое будет перемещено в первую очередь. Это должно происходить каждый раз, когда я нажимаю кнопку.

В Javascript это довольно straitforward, что-то вроде этого, например:

V = document.getElementsByTagName("img"); 
K = V[V.length - 1].src 
for (i = V.length - 1; i > 1; i--) 
{ 
    V[i].src = V[i - 1].src; 
} 
v[0].src = K; 

Теперь I'am пытается реализовать один и тот же сдвиг в JQuery и мне интересно, если есть простой трюк, чтобы использовать. Кто-нибудь может мне помочь?

+5

Я не думаю, что JQuery собирается улучшить то, что вы уже используете – j08691

+0

Я не видя, что ваш JS-код делает то, что вы описали, что хотите. Например, вы сказали «каждый раз, когда я нажимаю кнопку», но этот код не обрабатывает нажатия кнопок. – bhantol

+0

За исключением 'document.getElementsByTagName', являющегося просто' $ ("img"). Get() ', остальная часть кода, вероятно, будет немного длиннее. –

ответ

0

Я лично не буду так сильно связывать его с img. Вы добавляете другое изображение на страницу и получаете нежелательные результаты.

jQuery .each() documentation.

непроверенная, но что-то, как это будет работать:

$(document).ready(function() { 
    $('js-image-swap').on('click', function() { 

    var $images = $('img.swap-image'); 

    var lastIndex = $images.length - 1; 

    $images.each(function(index, $img) { 
     if (index == lastIndex) 
     $img.attr('src', $images.first().attr('src')); 
     else 
     $img.attr('src', $images.get(index +1).attr('src')); 
    }); 
    }); 
}); 

Не совсем довольно ..

+0

Вы можете просто использовать 'element' там без обертки jquery ... – Neal

+0

Я пробовал ваш код, но $ img.attr ('src', $ images.get (index +1) .attr ('src')) не является (отладчик Chrome говорит, что это не функция) ... –

1

На самом деле с равниной Javascript это даже проще, чем вы писали (нет необходимости в JQuery, это добавляет тяжелый нагрузка).

const images = document.getElementsByTagName("img"); 
let nextImageSrc = images[images.length - 1].src; 

Array.from(images).forEach((img) => { 
    const tmp = img.src; 
    img.src = nextImageSrc; 
    nextImageSrc = tmp; 
}); 

Если вы сделать использовать JQuery вы можете сделать то же самое:

const $images = $("img"); 
let nextImageSrc = $images.last().attr('src'); 

$images.each((i, img) => { 
    const tmp = img.src; 
    img.src = nextImageSrc; 
    nextImageSrc = tmp; 
}); 
+0

Я думаю, что вы, возможно, неправильно поняли сообщение OP. – canon

+0

Да, похоже, у меня есть. Одна минута @canon Я попытаюсь исправить :-) – Tuvia

+2

Обратите внимание, что если вы поддерживаете IE, стрелки и 'from' не будут работать, если вы, конечно, не используете транспилер .. но я собираюсь предположим, что OP не – Loktar