切换/选择更改div

时间:2012-11-28 08:07:45

标签: javascript jquery toggle image

我正在尝试构建一组简单的div,并带有此处显示的相应切换开关(图像);

[问题] http://jsfiddle.net/hAJe2/9

HTML:

<div id="maindiv">
    <div class="div1">div #1
    </div>
    <div class="div2">div #2
    </div>
    <div class="div3">div #3
    </div>
    <div class="div4">div #4
    </div>
</div>
<div id="imagediv">
    <img src="http://placehold.it/80x80/0066cc/ffffff" class="img-swap">
    <img src="http://placehold.it/80x80/0066cc/ffffff" class="img-swap">
    <img src="http://placehold.it/80x80/0066cc/ffffff" class="img-swap">
    <img src="http://placehold.it/80x80/ffff33/000000" class="img-swap">
    <img src="http://placehold.it/80x80/ffff33/000000" class="img-swap">
</div>

CSS:

#maindiv{margin:0 auto; text-align:center; font-family:arial, sans-serif;}

.div1{width:100px; height:50px; display:block; background:#33ff33; margin:10px auto;  line-height:50px; display:inline-block;}

.div2{width:100px; height:50px; display:block; background:#33ff33; margin:10px auto; line-height:50px; display:inline-block;}

.div3{width:100px; height:50px; display:block; background:#ff3333; margin:10px auto; line-height:50px; display:inline-block;}

.div4{width:100px; height:50px; display:block; background:#ff3333; margin:10px auto; line-height:50px; display:inline-block;}

#imagediv{background:#cccccc;}

img{margin:10px; cursor:pointer;}

JQUERY:

$(function(){
  $(".img-swap").on('click', function() {
    if ($(this).attr("class") == "img-swap") {
      this.src = this.src.replace("0066cc","cccccc");
    } else {
        this.src = this.src.replace("cccccc","0066cc");
    }

    if ($(this).attr("class") == "img-swap") {
      this.src = this.src.replace("ffff33","ccccc8");
    } else {
        this.src = this.src.replace("ccccc8","ffff33");
    }
    $(this).toggleClass();
  });
});

我希望能做的是。 Div#1,Div#2为绿色,Div#3,Div#4默认为红色。

1.如果点击蓝色图像,则Div 1,2和3为绿色 2.如果点击黄色图像,则Div 1和4为绿色 3.在任何给定时间只能点击一个图像(五个中的一个)。因此,如果我单击蓝色,然后单击黄色,黄色将覆盖,因此Div的1和4将为绿色。 (注意按下的图像将变为灰色,如上例所示。)

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

请参阅更新的fiddle

我清理了你的css代码。添加了用于处理事件的数据属性。这里是javascript代码,其中包含对其所做的评论

$(function(){
  // declare current var for later use
  var current;
  // if an element with the class img-swap is clicked
  $(".img-swap").on('click', function() {
     // set this image to grey (dont know if this is the right img url, but seems so)
     $(this).attr('src', 'http://placehold.it/80x80');
     // remember if we need to do swap1 (green, green, green, red) or swap 2 (green, red, red, green)
     current = $(this).hasClass('swap1') ? 'swap1' : 'swap2'; 
     // iterate over all our divs
     $('#maindiv div').each(function() {
        // remove the current classes (green AND red)
        $(this).removeClass('red green')
        // get the class from the data-attribute (data-swap1 or data-swap2) and add this class
        $(this).addClass($(this).data(current));   
     }); 
  });
});

编辑:你可能不应该为classNames使用“green”和“red”,我只是为了插图而做了

edit2:如果你想只允许点击img-swap一次,只需先点击你的点击处理程序检查img-src:看另一个小提琴的更新:http://jsfiddle.net/hAJe2/27/