내 스크립트에서 어떤 일이 일어나는지 알지 못합니다.Jquery가 두 번째 클릭 후 형제를 인식하지 못함
기능 : 18 % 너비의 블록이 4 개 있고 왼쪽으로 떠 있습니다. 한 블록을 클릭하면 SIBLINGS가 사라지고이 블록이 100 % 너비로 움직입니다.
아무 곳이나 클릭하면 (문서)이 블록이 18 % 너비로 돌아오고 SIBLINGS가 다시 페이드 인됩니다.
처음에는 제대로 작동하지만 다른 상자를 닫으려고하면이 첫 번째 상자가 다른 형제와 함께 사라지지 않습니다.
내 코드를 수행 한 후에 : JSFiddle에
: http://jsfiddle.net/4FKae/1/
HTML을
<div class="tipos-box">
<div class="box box-fechada red" rel=".red-data">
<div class="box-content">
Uhul abc
</div>
</div>
<div class="box box-fechada paleale" rel=".paleale-data">
<div class="box-content">
Uhul abc
</div>
</div>
<div class="box box-fechada pielsen" rel=".pielsen-data">
<div class="box-content">
Uhul abc
</div>
</div>
<div class="box box-fechada weiss" rel=".weiss-data">
<div class="box-content">
Uhul abc
</div>
</div>
</div>
CSS
.box {
width: 18%;
float: left;
margin: 3%;
height: 500px;
border: solid 1px #F00;
cursor: pointer;
}
.red:hover, .red.essa-box {
border: solid 1px #FF0;
}
.paleale:hover, .paleale.essa-box {
border: solid 1px #F0F;
}
.pielsen:hover, .weiss.essa-box {
border: solid 1px #FFF;
}
.weiss:hover, .weiss.essa-box {
border: solid 1px #0FF;
}
JQUERY
$(document).ready(function(){
$('.box-fechada').bind("click", abrebox);
function abrebox(e) {
$('.box-fechada').unbind("click");
e.stopPropagation();
$(this).dequeue();
$(this)
.addClass("essa-box")
.removeClass("box-fechada")
.queue(function(){
$(this).siblings().fadeOut();
$(this).dequeue();
})
.delay(500)
.queue(function(){
$(this).animate({
width: "100%"
});
$(this).dequeue();
});
$(document).bind("click", function(){
$(".essa-box")
.animate({
width: "18%"
})
.queue(function(){
$(this).siblings().fadeIn();
})
.addClass("box-fechada")
.removeClass("essa-box");
$(document).unbind("click");
$('.box-fechada').bind("click", abrebox);
});
}
});
정말 논리를 따르지 않는) (CSTE 연구진 이용해야하지만, 나는 그것이 바인딩과'.box - fechada'에 클릭 처리기를 바인딩 해제에 관련이 내기 할 것이다 . 왜 그것을하고 있습니까? 클래스를 동적으로 추가하고 제거했기 때문에 위임을'.on()'과 함께 사용하지 않는 이유는 무엇입니까? – Barmar