В основном у меня есть 4 изображения и 4 кнопки. Все 4 изображения являются черными и белыми.
Щелчок Button1-> переключатели отображает 1 от черного цвета и белого цвета к цветному изображению
Щелчок Button2-> то же для image2
Щелчок Button3-> то же для image3
Щелчок Button4-> то же для image4
До сих пор мой код частично работает. Проблема состоит в том, что, когда я нажимаю кнопку 1 и затем нажимаю кнопку 2.... на ту точку и image1 и image2 останутся как цветные изображения.
То, что я хотел бы сделать, - то, что на любой проверке нажатия кнопки, чтобы видеть, переключаются ли какие-либо другие изображения как цветные изображения, раз так затем, переключите их назад к черному цвету и белому цвету и только переключите выбранные изображения к цветному изображению.
Щелчок Button2-> Сначала: проверьте, чтобы видеть, отображают ли какие-либо изображения, переключенные как цвет, раз так переключите их назад
second:toggle image2 от черного цвета и белого цвета к цветным изображениям
Код
<button id="btn1" >Toggle1</button
>
<button id="btn2" >Toggle2</button
>
<button id="btn3" >Toggle3</button
>
<button id="btn4" >Toggle4</button
>
<div class="div1" ><img src="graphics/image1_black.jpg" /></div
> <div class="div1 divblack" style="display: none"><img src="graphics/image1.jpg" /></div
>
<div class="div2" ><img src="graphics/image2_black.jpg" /></div
> <div class="div2 divblack" style="display: none"><img src="graphics/image2.jpg" /></div
>
<div class="div3" ><img src="graphics/iamge3_black.jpg" /></div
> <div class="div3 divblack" style="display: none"><img src="graphics/image3.jpg" /></div
>
<div class="div4" ><img src="graphics/iamge4_black.jpg" /></div
> <div class="div4 divblack" style="display: none"><img src="graphics/iamge4.jpg" /></div
>
<script
>
$("#btn1").click(function() {
$(".div1").toggle();
});
$("#btn2").click(function() {
$(".div2").toggle();
});
$("#btn3").click(function() {
$(".div3").toggle();
});
$("#btn4").click(function() {
$(".div4").toggle();
});
</script
>
=========================================================================
Это - то, что я пытаюсь сделать. Поскольку Вы видите, что мой класс накладывается между изображениями. Таким образом, одно изображение может иметь больше чем 1 класс. Это заставляет кнопки уже переключить toggeled изображения.
<button id="btn1" >Toggle1</button>
<button id="btn2" >Toggle2</button>
<button id="btn3" >Toggle3</button>
<button id="btn4" >Toggle4</button>
<img class="im1" src="image1_bw.jpg" />
<img class="im1 im2" src="image2_bw.jpg" />
<img class="im2 im3" src="image3_bw.jpg" />
<img class="im4" src="image4_bw.jpg" />
<script>
// Use the same handler for all button elements
// where the ID starts with "btn"
$("[id^=btn]").click(function() {
// Grab the number from the end of the ID
var number = this.id.match(/\d+$/)[0];
// Find the image ID ending in the same number
// and modify its src, toggling the "_black" part of it
var $img = $(".im" + number).attr('src', function(i, attr) {
return /_bw/.test(attr) ? attr.replace(/_bw/, '') : attr.replace(/.jpg/, '_bw.jpg');
});
// Get the rest of elements with IDs starting with "img"
// and modify their src, removing "_black"
$("[id^=img]").not($img).attr('src', function(i, attr) {
return attr.replace('_bw', '');
});
});
</script>
Не возражаете, если я предлагаю другой подход?
Просто настройте один обработчик для всех кнопок и дайте идентификаторам изображений, оканчивающимся на один и тот же соответствующий номер.
Затем просто измените атрибут src
изображения с тем же номером, чтобы переключить часть _black
, и удалите часть _black
из src
от остальных.
HTML
<button id="btn1" >Toggle1</button>
<button id="btn2" >Toggle2</button>
<button id="btn3" >Toggle3</button>
<button id="btn4" >Toggle4</button>
<img class="im1" src="image1_bw.jpg" />
<img class="im1 im2" src="image2_bw.jpg" />
<img class="im2 im3" src="image3_bw.jpg" />
<img class="im4" src="image4_bw.jpg" />
jQuery
$("[id^=btn]").click(function () {
var number = this.id.match(/\d+$/)[0];
var $img = $(".im" + number);
var button = this;
$img.each(function () {
var $th = $(this);
if ($th.is('[src*=_bw]')) {
$th.data('button', button.id);
$th.attr('src', function (i, attr) {
return attr.replace(/_bw/, '');
});
} else if ($th.data('button') == button.id) {
if ($th.not('[src*=_bw]').length) {
$th.attr('src', function (i, attr) {
$th.data('button', null);
return attr.replace(/.jpg/, '_bw.jpg');
});
}
}
});
});
РЕДАКТИРОВАТЬ: Обновлено так, что только кнопка, которая сделала изображение цветным, может вернуть его обратно к черно-белому.
РЕДАКТИРОВАТЬ: Кажется, у нас есть несколько возможностей для рассмотрения с учетом изображений, связанных с определенной кнопкой.
Написанный код должен включать достаточную логику для следующих возможных сценариев:
Нажатая кнопка имеет ...
- ... 2 черно-белых изображения, поэтому установите цвет и сохраните, какая кнопка установленный их.
- ...2 цветных изображения, которые были установлены той же кнопкой, что и щелкнул, поэтому установите их на ч / б и удалите запись кнопки, которая сделала их цвет.
- ... 2 цветных изображения, но оба настроены разными кнопками, поэтому нажатие кнопки не будет иметь никакого эффекта.
- ... 2 изображения цветные, но только одно из них установлено кнопкой щелкнул, так что сделайте одно изображение ч / б и стереть запись кнопки это сделало его цветным.
- ... 2 изображения (1 цветное и 1 ч / б), а одно цветное было установлено кнопка нажата, поэтому либо измените цвет один в ч / б и сотрите запись кнопки, сделавшей это цвет, ИЛИ сделайте ч / б одноцветным, и запомнить, какая кнопка сделала его цветным. (Нет уверены, что хотите.)
- ... 2 изображения (1 цветное и 1 ч / б), а одно цветное было установлено другую кнопку, поэтому не меняйте цвет один, а ч / б поменять на цвет и запомнить, какая кнопка его сделала цвет.
- ... 1 черно-белое изображение, поэтому установите цвет и запомните, какая кнопка его установила.
- ... 1 цветное изображение было установлено той же кнопкой, что и нажал, поэтому установите его на ч / б и удалите запись кнопки, которая сделала это цвет.
- ... 1 цветное изображение было установлено другой кнопкой, поэтому нажатие кнопки не будет иметь никакого эффекта.
Просто переключение не поможет. для этого вам понадобится специальная функция switchToBW
и switchToColor
.
Самый простой способ: При нажатии вы переключаете все изображения на ч / б, а затем только на то, которое хотите раскрасить.
"Лучший" способ: При щелчке переключите все те изображения, которые не являются ч / б, на ч / б, а затем то, которое вы хотите раскрасить.