javascript - jQuery 条件式,else 语句无效?

标签 javascript jquery

我正在为一个项目开发一个小型示例库,该项目通过删除和重新分配识别类来使用右/左按钮移动图像,然后将图像附加到显示元素。

我尝试为我的变量之一引入 if/else 条件语句,其中“else”语句旨在选择与事件图像相对的图像(如果它位于数组末尾)(如果说事件图像是画廊中的最后一个图像,我希望 else 语句为右侧按钮选择第一张图像)。 然而,我的声明的 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");

});

我的“else”声明哪里出了问题? 或者我是否会以错误的方式实现条件?

最佳答案

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");

关于javascript - jQuery 条件式,else 语句无效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45399034/

相关文章:

javascript - 计算数组Javascript中的重复值

javascript - 在 ng-grid 中添加带有计算字段的新行

javascript - 尝试使用 html 控制台获取元素的样式属性时出错

javascript - 如何保存两个嵌套属性的 id?

javascript - 如何更可靠地从动态变化的元素中获取变量?

javascript - 检测视口(viewport)并重定向到不同的主页

javascript - js confirm()/Firefox vs Chrome 行为之后的 focus() 事件

javascript - 允许元素的前后内容覆盖父溢出限制

javascript - jQuery:在 $.ajax 成功函数中使用 $(this)

javascript - 将时间输入设置为数据库中的日期时间