[英]Onclick of image toggle image src
我的頁面中有 3 個菜單,每個菜單都有 2 種顏色的圖像(藍色和綠色 img)。
每個菜單圖像上的 Onclick 應相應切換。 我已經做到了,而且工作正常。
HTML:
<div class="catSection">
<div class="col-md-2 col-sm-4 col-xs-4">
<img src="design.svg" id='changeImage1' ng-click="changeImage($event)">
</div>
<div class="col-md-2 col-sm-4 col-xs-4">
<img src="compute.svg" id='changeImage2' ng-click="changeImage($event)">
</div>
<div class="col-md-2 col-sm-4 col-xs-4">
<img src="cloud.svg" id='changeImage3' ng-click="changeImage($event)">
</div>
</div>
客戶端腳本:
$scope.changeImage = function(event) {
// $(".catSection img").removeClass("active");
//$(event.target).addClass("active");
if (event.target.src.split('/')[3] == 'design.svg')
$("#" + event.target.id).attr("src", "design_open1.svg");
else if (event.target.src.split('/')[3] == 'design_open1.svg')
$("#" + event.target.id).attr("src", "design.svg");
if (event.target.src.split('/')[3] == 'compute.svg')
$("#" + event.target.id).attr("src", "compute_open.svg");
else if (event.target.src.split('/')[3] == 'compute_open.svg')
$("#" + event.target.id).attr("src", "compute.svg");
if (event.target.src.split('/')[3] == 'cloud.svg')
$("#" + event.target.id).attr("src", "public_open.svg");
else if (event.target.src.split('/')[3] == 'public_open.svg')
$("#" + event.target.id).attr("src", "cloud.svg");
}
問題是當我單擊一個菜單 img 時,菜單 img 的 rest 應該被藍色替換,這意味着初始 position。
它就像在列表元素之間切換活動類一樣。
我被困在那里。 任何人都可以提出一些想法嗎?
我還沒有使用 Angular 的經驗,但是您的 jQuery function 可能看起來像這樣。 在這個例子中,我添加了一個p
標簽來顯示圖像的來源。
$(document).ready(function() { $('.catSection img').on('click', onClickCatSectionImage); function onClickCatSectionImage(event) { var targetImage = $(event.target); var targetSrc = targetImage.attr('src'); // this selector is important to get the other menues too $('.catSection img').not(targetImage).each(function(index, element) { var siblingImage = $(element); siblingImage.attr('src', siblingImage.attr('src').replace('_open1.svg', '.svg')); }); if (targetSrc.includes('._open1.svg')) { targetImage.attr('src', targetSrc.replace('_open1.svg', '.svg')); } else { targetImage.attr('src', targetSrc.replace('.svg', '_open1.svg')); } // this function could be deleted because is just for showing the image sources showImageSrc(); } function showImageSrc() { $('.catSection img').each(function(index, element) { $(element).siblings('p').text($(element).attr('src')); }); } });
img { width: 100%; height: 100px; }
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" /> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class="row catSection"> <div class="col-md-2 col-sm-4 col-xs-4"> <img src="design.svg" id="changeImage1"> <p></p> </div> <div class="col-md-2 col-sm-4 col-xs-4"> <img src="compute.svg" id="changeImage2"> <p></p> </div> <div class="col-md-2 col-sm-4 col-xs-4"> <img src="cloud.svg" id="changeImage3"> <p></p> </div> </div> <div class="row catSection"> <div class="col-md-2 col-sm-4 col-xs-4"> <img src="o_design.svg" id="changeImage4"> <p></p> </div> <div class="col-md-2 col-sm-4 col-xs-4"> <img src="o_compute.svg" id="changeImage5"> <p></p> </div> <div class="col-md-2 col-sm-4 col-xs-4"> <img src="o_cloud.svg" id="changeImage6"> <p></p> </div> </div>
嘗試這個。
向圖像添加兩個data-
屬性
data-src
- 存儲藍色圖像 srcdata-srcActive
- 存儲綠色圖像 src 現在在您的ng-click
事件中執行這些操作
catSection
后代的每個img
$scope.changeImage = function(event) { var target = event.target, targetImg = target.src.split('/').pop(); $('.catSection img').each(function() { var elm = this, $elm = $(elm); // if img is clicked image and default state if (elm.id === target.id && elm.src === $elm.data('src')) { elm.src = $elm.data('srcActive'); //active } else { // reset all other src to default elm.src = $elm.data('src'); //default } }); };
<div class="catSection"> <div class="col-md-2 col-sm-4 col-xs-4"> <img data-src="design.svg" data-srcActive="design_open1.svg" src="design.svg" id='changeImage1' ng-click="changeImage($event)"> </div> <div class="col-md-2 col-sm-4 col-xs-4"> <img data-src="compute.svg" data-srcActive="compute_open.svg" src="compute.svg" id='changeImage2' ng-click="changeImage($event)"> </div> <div class="col-md-2 col-sm-4 col-xs-4"> <img data-src="cloud.svg" data-srcActive="public_open.svg" src="cloud.svg" id='changeImage3' ng-click="changeImage($event)"> </div> </div>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.