我正在为一个项目开发一个小型示例库,该项目通过删除和重新分配识别类来使用右/左按钮移动图像,然后将图像附加到显示元素。
我尝试为我的变量之一引入 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/