addClass должен применяться только к следующему IMG

Я надеюсь, что кто-нибудь может мне помочь. как я могу сделать так, чтобы addClass применялся только к следующему img, а не ко всем последующим? редактировать: «addClass» всегда должен применяться к следующему следующему IMG, чтобы вы могли щелкать все изображения одно за другим — как в галерее

$("#next").click(function(){
    if($("#gallery li").next("#gallery li").length != 0) {
        $("#gallery li").children("img").removeClass('toppicture');
        $("#gallery li").next("#gallery li").children("img").addClass('toppicture');
    }
    else {
        $(this).children("img").removeClass('toppicture');
        $("#gallery li:first-child").children("img").addClass('toppicture');
    }
});

ul с идентификатором «галерея» выглядит так:

<li>
    <img class="toppicture" src="images/w1.jpg" title="Title #0"/>
</li>
<li>
    <img  src="images/w2.jpg" title="Title #1"/>
</li>
<li>
    <img  src="images/w3.jpg" title="Title #2"/>
</li>

person D.Steinel    schedule 19.02.2012    source источник


Ответы (2)


Ты пытался :

$("#next").click(function(){
                if($("#gallery li").next("#gallery li").length != 0) {
                    var obj = $(".toppicture").parent("li").next().children("img");
                    $("#gallery li").children("img").removeClass('toppicture');
                    $(obj).addClass('toppicture');
                }
                else {
                    $(this).children("img").removeClass('toppicture');
                    $("#gallery li:first-child").children("img").addClass('toppicture');
                }
            });

источник: http://api.jquery.com/first-selector/

person Derik Nel    schedule 19.02.2012
comment
Спасибо за быстрый ответ! если я делаю это так (img:first), это применяется к следующему, но дальше не идет. - person D.Steinel; 19.02.2012
comment
НП! Извините, я думал, это то, что вы хотели: как я могу сделать так, чтобы addClass применялся только к следующему изображению, а не ко всем последующим? Нельзя ли подробнее объяснить, что должно произойти? - person Derik Nel; 19.02.2012
comment
addClass всегда должен применяться к следующему следующему IMG, чтобы вы могли щелкать все изображения одно за другим — как в галерее. - person D.Steinel; 19.02.2012
comment
Я отредактировал свой ответ выше, посмотрите, поможет ли это. Что я сделал, так это создал объект следующего изображения, затем удалил перекрестную доску класса toppicture, а затем добавил его только к объекту. - person Derik Nel; 19.02.2012
comment
потрясающие вещи! работает отлично! единственное, что сейчас, это то, что он не возвращается к первому ребенку (изображению), если я нахожусь в конце списка изображений. - person D.Steinel; 19.02.2012

Может быть, вы могли бы попробовать

$("#next").click(function(){
    //find the li with the class
    var liTop = $("#gallery li.toppicture");
    //if it has another element remove the class from itself and add it to the next 
    if(liTop.next().length !== 0) {
        liTop.removeClass('toppicture');
        liTop.next().addClass('toppicture');
    }
    else {
        $(this).children("img").removeClass('toppicture');
        $("#gallery li:first-child").children("img").addClass('toppicture');
    }
});
person Nicola Peluchetti    schedule 19.02.2012
comment
к сожалению, это не работает для меня. это просто работает, если я удалю .toppicture во второй строке, чтобы это было: $(#gallery li). но это также относится к каждому изображению в списке. Спасибо, в любом случае!! - person D.Steinel; 19.02.2012