我正在为一个项目的小样本库工作,该项目通过删除和重新分配用于识别的类来移动带右/左按钮的图像,然后将图像附加到显示元素。
我尝试为我的一个变量引入一个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;声明? 或者我是否会以错误的方式实施条件?
答案 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");