. toggleclass()方法的奇怪行为

Weird behavior of .toggleClass() method

本文关键字:方法 toggleclass      更新时间:2023-09-26

我有两个div元素(纸牌),我想执行翻转效果(使用css3)。问题是当用户点击div元素(即卡片)时,所有卡片都被翻转。我只想翻转被点击的div (card),而不是所有div。谁能告诉我哪里出了问题?

下面是jsFiddle的演示:

jsFiddle

下面是使用的代码:

HTML:

<div class="flip-container">
    <div class="flipper" id="flipper">
        <div class="front"> 
        </div>
    <div class="back">
            <img src="http://icons.iconarchive.com/icons/reclusekc/kulo/96/Skull-1-icon.png">
        </div>
        <div class="front"> 
        </div>
    <div class="back">
            <img src="http://img9.uploadhouse.com/fileuploads/17699/176992615db99bb0fd652a2e6041388b2839a634.png">
        </div>
    </div>
</div>
JavaScript:

/*Jquery is incuded */
$(".flipper").click(function(){
    var id = $(this).attr("id");
    document.getElementById(id).classList.toggle('flipped');
});
CSS:

/* entire container, keeps perspective */
.flip-container{
/*perspective*/
-webkit-perspective:1000;
   -moz-perspective:1000;
    -ms-perspective:1000;
     -o-perspective:1000;
        perspective:1000;
    display: table;
        margin: 0px auto;
    width: auto;
}
/* flip the pane when hovered */
    .flipped {
/*transform*/
-webkit-transform:rotateY(180deg);
   -moz-transform:rotateY(180deg);
    -ms-transform:rotateY(180deg);
     -o-transform:rotateY(180deg);
        transform:rotateY(180deg);
}
.front, .back{
 float: left;
    width: 100px;
    height: 120px;
    margin: 5px;
    padding: 5px;
    border: 4px solid #EE872A;
    cursor: pointer;
    border-radius: 10px;
    box-shadow: 0 1px 5px rgba(0,0,0,.5);
        z-index:2;
  background: #B1B1B1;
    /*backface-visibility*/
-webkit-backface-visibility:hidden;
   -moz-backface-visibility:hidden;
    -ms-backface-visibility:hidden;
     -o-backface-visibility:hidden;
        backface-visibility:hidden;
}
/* flip speed goes here */
.flipper {
/*transition*/
-webkit-transition:0.6s;
   -moz-transition:0.6s;
     -o-transition:0.6s;
        transition:0.6s;
/*transform-style*/
-webkit-transform-style:preserve-3d;
   -moz-transform-style:preserve-3d;
    -ms-transform-style:preserve-3d;
     -o-transform-style:preserve-3d;
        transform-style:preserve-3d;
position:relative;
}
/* hide back of pane during swap */
/* front pane, placed above back */
/* back, initially hidden pane */
.back{
/*transform*/
-webkit-transform:rotateY(180deg);
   -moz-transform:rotateY(180deg);
    -ms-transform:rotateY(180deg);
     -o-transform:rotateY(180deg);
        transform:rotateY(180deg);
    z-index:3;
}

应该能成功http://jsfiddle.net/wvveY/61/

<div class="flip-container">
    <div class="flipper">
        <div class="front"></div>
        <div class="back">
            <img src="http://icons.iconarchive.com/icons/reclusekc/kulo/96/Skull-1-icon.png">
        </div>
    </div>
    <div class="flipper">
        <div class="front"></div>
        <div class="back">
            <img src="http://img9.uploadhouse.com/fileuploads/17699/176992615db99bb0fd652a2e6041388b2839a634.png">
        </div>
    </div>
</div>

$(".flipper").click(function () {
    $(this).toggleClass('flipped');
});

尝试在你的JS中使用

$(".flipper").click(function(){
    $(this).toggleClass('flipped');
});

和你的HTML如下:

<div class="flipper">
    <div class="front"> 
    </div>
    <div class="back">
       <img src="http://icons.iconarchive.com/icons/reclusekc/kulo/96/Skull-1-icon.png">
    </div>
</div>
<div class="flipper">
    <div class="front"> 
    </div>
    <div class="back">
        <img src="http://img9.uploadhouse.com/fileuploads/17699/176992615db99bb0fd652a2e6041388b2839a634.png">
    </div>
</div>

也许你想要这样的东西http://jsfiddle.net/wvveY/67/

你需要把你的卡片分开,像这样:

<div class="flip-container">
    <div class="flipper" >
        <div class="front"> 
        </div>
    <div class="back">
            <img src="http://icons.iconarchive.com/icons/reclusekc/kulo/96/Skull-1-icon.png">
        </div>
        </div>
        <div class="flipper" >
        <div class="front"> 
        </div>
    <div class="back">
            <img src="http://img9.uploadhouse.com/fileuploads/17699/176992615db99bb0fd652a2e6041388b2839a634.png">
        </div>