我正在创建一个滑块体,但遇到了问题。我有一个前一个“按钮”,可以向前和向后滑动。单击此按钮时,它将删除使其向前和向后执行动画的类,但是当我删除该类时,动画仍然有效。为什么呢?
制作东西:
esq = 0;
var navR,navL = false;
$(".caixa_pequena").each(function(){
var $element = $(this).css('left');
final = parseFloat($element) + parseFloat(esq);
$(this).css('left', parseFloat(final) + 'px');
esq = esq + 200;
});
前进按钮:
$('.nav_depois').click(function(){
desactEsq();
desactDir();
var nr = $(".caixa_pequena").size()-1;
var total = (nr * (parseInt(-200)))+ parseInt($(".caixa_pequena").css('left')) + 'px';
var m = $(".caixa_pequena").offset().left+'px';
if(total != m){
$("#texto").animate({left: '-=200'}, 'slow', function(){
/*actEsq();
actDir();*/
});
}
});
后退按钮
$('.nav_antes').click(function(){
desactEsq();
desactDir();
var l = $(".caixa_pequena").offset().left+'px';
if(l != $(".caixa_pequena").css('left')){
$("#texto").animate({left: '+=200'}, 'slow', function(){
/*actEsq();
actDir();*/
});
}
});
有效/去激活
function desactDir () {
navR = false;
$('#nav_panel').find('.nav_depois').removeClass();
}
function desactEsq () {
navL = false;
$('#nav_panel').find('.nav_antes').removeClass();
}
function actDir () {
navR = true;
$('#nav_panel').find('#nav_next').addClass('nav_depois');
}
function actEsq () {
navL = true;
$('#nav_panel').find('#nav_prev').addClass('nav_antes');
}
});
html
<div id="caixa_grande">
<div id="texto">
<div class="caixa_pequena">SPORT LISBOA E BENFICA</div>
<div class="caixa_pequena">SPORTING CLUBE DE PORTUGAL</div>
<div class="caixa_pequena">FUTEBOL CLUBE DOS COXOS</div>
</div>
</div>
<div id="nav_panel">
<a id="nav_next" class="nav_antes"><-------|</a>
<a id="nav_prev" class="nav_depois">|--------></a>
</div>
答案 0 :(得分:2)
当你执行
时,click方法绑定到元素$('.nav_depois').click(function(){
//code...
});
jQuery将搜索具有nav_depois
类的每个元素,并设置您传递的函数,以便在发生单击时执行。
为了更清楚它绑定事件,所以
jQuery("element").click(f);
转换为
jQuery("element").bind("click", f);
要删除该方法,您应该使用unbind
(或off
,如果您使用的是jQuery 1.7),例如
function desactDir () {
navR = false;
$('#nav_panel').find('.nav_depois').unbind("click");
}
并重新连接它你应该再绑定它(使用click或bind方法),为此我建议存储函数并将其作为参数传递,如:
var navAntesFunction = function (){
//code
}
$('.nav_antes').click(navAntesFunction);
function actEsq () {
navL = true;
$('#nav_panel').find('#nav_prev').click(navAntesFunction);
}