Как к jQuery переключают повторные изображения на другом нажатии кнопки?

В основном у меня есть 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>
1
задан Zeus 26 June 2010 в 21:31
поделиться

2 ответа

Не возражаете, если я предлагаю другой подход?

Просто настройте один обработчик для всех кнопок и дайте идентификаторам изображений, оканчивающимся на один и тот же соответствующий номер.

Затем просто измените атрибут 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');
                });
            }
        }
    });
});

РЕДАКТИРОВАТЬ: Обновлено так, что только кнопка, которая сделала изображение цветным, может вернуть его обратно к черно-белому.

РЕДАКТИРОВАТЬ: Кажется, у нас есть несколько возможностей для рассмотрения с учетом изображений, связанных с определенной кнопкой.

Написанный код должен включать достаточную логику для следующих возможных сценариев:

Нажатая кнопка имеет ...

  1. ... 2 черно-белых изображения, поэтому установите цвет и сохраните, какая кнопка установленный их.
  2. ...2 цветных изображения, которые были установлены той же кнопкой, что и щелкнул, поэтому установите их на ч / б и удалите запись кнопки, которая сделала их цвет.
  3. ... 2 цветных изображения, но оба настроены разными кнопками, поэтому нажатие кнопки не будет иметь никакого эффекта.
  4. ... 2 изображения цветные, но только одно из них установлено кнопкой щелкнул, так что сделайте одно изображение ч / б и стереть запись кнопки это сделало его цветным.
  5. ... 2 изображения (1 цветное и 1 ч / б), а одно цветное было установлено кнопка нажата, поэтому либо измените цвет один в ч / б и сотрите запись кнопки, сделавшей это цвет, ИЛИ сделайте ч / б одноцветным, и запомнить, какая кнопка сделала его цветным. (Нет уверены, что хотите.)
  6. ... 2 изображения (1 цветное и 1 ч / б), а одно цветное было установлено другую кнопку, поэтому не меняйте цвет один, а ч / б поменять на цвет и запомнить, какая кнопка его сделала цвет.
  7. ... 1 черно-белое изображение, поэтому установите цвет и запомните, какая кнопка его установила.
  8. ... 1 цветное изображение было установлено той же кнопкой, что и нажал, поэтому установите его на ч / б и удалите запись кнопки, которая сделала это цвет.
  9. ... 1 цветное изображение было установлено другой кнопкой, поэтому нажатие кнопки не будет иметь никакого эффекта.
2
ответ дан 2 September 2019 в 23:38
поделиться

Просто переключение не поможет. для этого вам понадобится специальная функция switchToBW и switchToColor .

Самый простой способ: При нажатии вы переключаете все изображения на ч / б, а затем только на то, которое хотите раскрасить.

"Лучший" способ: При щелчке переключите все те изображения, которые не являются ч / б, на ч / б, а затем то, которое вы хотите раскрасить.

0
ответ дан 2 September 2019 в 23:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: