2016-09-24 131 views
-1

我想交換一個圖像上的點擊與JavaScript如果其他方法。第一個圖像交換工作(如果),但其他2不(如果)。這裏是我的JS/JQuery的:圖像交換圖像點擊與JavaScript如果其他

$("#right").on("click" , 

function() { 

    var pic = $("#selection img").attr("id"); 

    if (pic == "instagram") { 
     $("#instagram").removeClass("show").addClass("hide"); 
     $("#snapchat").removeClass("hide").addClass("show"); 
     $("span").text("Snapchat"); 

    } 

    else if (pic == "snapchat") { 
     $("#snapchat").removeClass("show").addClass("hide"); 
     $("#twitter").removeClass("hide").addClass("show"); 
     $("span").text("Twitter"); 
    } 

    else if (pic == "twitter") { 
     $("#twitter").removeClass("show").addClass("hide"); 
     $("#facebook").removeClass("hide").addClass("show"); 
     $("span").text("Facebook"); 
    } 

}); 

這裏是我的CSS:

.hide { 
display: none; 
} 

.show { 
display: inline; 
} 

這裏是我的HTML:

<div id="selection"> 
    <img id="instagram" class="show" src="img/instagram.png"> 
    <img id="snapchat" src="img/snapchat.png"> 
    <img id="twitter" src="img/twitter.png"> 
    <img id="facebook" src="img/facebook.png"> 
</div> 

謝謝您的解答!

+0

安迪:你想在時間顯示一個圖像?然後下一個下一個,是嗎?什麼是對的 ? –

+0

你好,是的,我想在當時顯示一個圖像,然後顯示下一個圖像。 #right是一個箭頭svg文件。 –

+0

將'pic'的值記錄到控制檯,並感到驚訝。 – CBroe

回答

0

您需要交換圖像索引之間的類。

這被認爲是循環,如果你在最後一個索引上,那麼它應該從第一個開始。

檢查工作片段。

//Apply the hide to all the images except first one 
 
$('#selection img').not(":eq(0)").addClass("hide"); 
 
var currentIndex=0; 
 
var newIndex=0; 
 
$("#right").on("click" , function() { 
 
    //Check is it a last index 
 
    var isLast = $('#selection img').last().hasClass('show'); 
 
    currentIndex = $('#selection img.show').index(); 
 
    //If it is last index then hide the same and show the first image 
 
    if(isLast) 
 
    { 
 
      $('#selection img:eq('+currentIndex+')') 
 
       .removeClass('show') 
 
       .addClass('hide'); 
 

 
      $('#selection img:eq(0)') 
 
       .removeClass('hide') 
 
       .addClass('show'); 
 
    } 
 
    else 
 
    { 
 
      $('#selection img:eq('+currentIndex+')') 
 
       .removeClass('show') 
 
       .addClass('hide'); 
 

 
      $('#selection img:eq('+(currentIndex+1)+')') 
 
       .removeClass('hide') 
 
       .addClass('show'); 
 
    } 
 
    $('#output').html($('#selection img.show').attr('id')); 
 
});
.hide { 
 
display: none; 
 
} 
 

 
.show { 
 
display: inline; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="selection"> 
 
    <img id="instagram" class="show" src="img/instagram.png"> 
 
    <img id="snapchat" src="img/snapchat.png"> 
 
    <img id="twitter" src="img/twitter.png"> 
 
    <img id="facebook" src="img/facebook.png"> 
 
</div> 
 
<span id="output"></span> 
 
<a href="#" id="right">Right</a>

+0

你好@loading ..它的工作原理flawlessy以及。我在哪裏可以添加文字chnage?所以當instagram標識顯示其「instagram」時,並且當snapchat logo顯示時顯示「snapchat」。此外,如果您可以用添加的左箭頭更新代碼片段。所以它是雙方的。謝謝 –

+0

@AndyMac:看到它會自動獲取選定/顯示的圖像的ID,考慮作爲一個文本來顯示。 –

+0

我有文字的

0

也許嘗試somerthing這樣的:

$("#right").on("click" , function() { 

     var pic = $("#selection img").attr("id"); 
     $("#selection img").removeClass("show").addClass("hide"); 
     $("#selection #"+pic).removeClass("hide").addClass("show"); 
     $("span").text(pic); 
    }); 

}); 
+0

我剛測試它,它沒有工作。 –

0

關於本上傳到小提琴!這應該可以解決你的問題。

$("#right").click(function() { 
    var nextImg = $(".show").next(); 
    if ($(".show").attr("id") == "facebook") { 
     nextImg = $("#instagram"); 
    } 
    $(".show").addClass("hide"); 
    $(".show").removeClass("show"); 
    nextImg.addClass("show"); 
    nextImg.removeClass("hide"); 
}); 

$("#left").click(function() { 
    var prevImg = $(".show").prev(); 
    if ($(".show").attr("id") == "instagram") { 
     prevImg = $("#facebook"); 
    } 
    $(".show").addClass("hide"); 
    $(".show").removeClass("show"); 
    prevImg.addClass("show"); 
    prevImg.removeClass("hide"); 
}); 

看完你的問題後,它看起來不確定你實際要問什麼。你想創建某種畫廊嗎?是否有其他兄弟姐妹沒有的原因class="hide"

如果你沒有注意到你的pic變量不等於一個圖像。

var pic = $("#selection img").attr("id"); 

什麼你問的是: 「如果在#selection圖像有一個id」(這是所有的人)也許你的意思

var pic = $("#selection img").hasClass("show"); 

https://jsfiddle.net/swvq6ves/(舊小提琴)

這裏還有一個新的小提琴,包括一個前一個按鈕! https://jsfiddle.net/swvq6ves/1/

+0

謝謝@conorReidd!作品單調乏味!欣賞幫助:) –

+0

你能否更新小提琴,以便它可以用於左箭頭?所以它回到之前的圖片。像圖像選擇選項一樣。 –

+0

@AndyMac發生了什麼事,如果我達到最後的形象,因爲它沒有顯示最後的形象,如果我改變了ID,它將無法正常工作..所以這不是一個好的方式來編碼文本匹配。 –