jQuery条件,else语句无效?

时间:2017-07-30 10:52:28

标签: javascript jquery

我正在为一个项目的小样本库工作,该项目通过删除和重新分配用于识别的类来移动带右/左按钮的图像,然后将图像附加到显示元素。

我尝试为我的一个变量引入一个if / else条件语句,其中" else"语句用于选择与活动图像相对的图像(如果它位于数组的末尾)(如果活动图像是库中的最后一个图像,我希望else语句为RIGHT按钮的第一个图像选择) 。 然而,我的声明的else语句不起作用,并且活动类被分配给DOM中下一行的任何元素。

HTML:

    

    <h2>Random Image Gallery</h2>

        <div id="display"></div>

    <div class="active slider" id="slide1">
        <img src="images/482.jpg" alt="random image boats">
        <p>Boats on a River</p>
    </div>

    <div class="slider" id="slide2">
        <img src="images/1109-600x376.jpg" alt="random image">
        <p>Grey Landscape</p> 
    </div>

    <div class="slider" id="slide3">
        <img src="images/1648jpg" alt="random image3">
        <p>River Dock</p>
    </div>

<article>

        <button id="lbutton">Left</button>

        <button id="rbutton">Right</button>

    </article>

javascript(对相关条件的评论):

jQuery("#rbutton").on("click", function() {
    "use strict";

    var active = jQuery("div#gallerybox > div.active");
    //"else" conditional is inert?
    var next = active.next("div.slider") ? active.next("div.slider") : jQuery("div#slide1");

    var nextImage = next.find("img").clone().addClass("dis");

    var display = jQuery("div#display");

    var prevDisImg = display.find("img.dis ~ img.dis") ? display.find("img:first-of-type") : null() ;

    nextImage.appendTo("div#display"); 

    prevDisImg.remove();                

    next.addClass("active");

    active.removeClass("active");


});
         //This button works
jQuery("#lbutton").on("click", function() {
    "use strict";

    var active = jQuery("div#gallerybox > div.active");

    var previous = active.prev("div.slider").length ? active.prev("div.slider") : jQuery("div#gallerybox > div:last");

    var prevImage = previous.find("img").clone().addClass("dis");

    var display = jQuery("div#display");

    var nextDisImg = display.find("img.dis + img.dis") ? display.find("img:last-of-type") : null();

    prevImage.appendTo("div#display");

    nextDisImg.remove();

    previous.addClass("active");

    active.removeClass("active");

});

我的错误在哪里?#34;否则&#34;声明? 或者我是否会以错误的方式实施条件?

1 个答案:

答案 0 :(得分:1)

jQuery总是会返回一个新的jquery对象,并且它们很简单所以你这样做:

var result = {} ? "truthy":" objects are never falsy";

您可以检查jquery集合的length属性:

var previous = active.prev("div.slider").length ? active.prev("div.slider") : jQuery("div#gallerybox > div:last");