我想让div第一次点击它离开,第二次回到原来的位置,再次离开第三次等等。
为什么这不起作用: http://jsfiddle.net/kS7KE/2/
var checker = new Boolean();
checker = true;
if (checker = true){
$("#div").click(function () {
$(this).animate({left: "10%"},400);
checker = false;
});
}
if (checker != true){
$("#div").click(function () {
$(this).animate({left: "30%"},400);
checker = true;
});
}
答案 0 :(得分:3)
为什么这么多代码? :)
var checker = true;
$("#div").click(function () {
targetLeft = checker ? "10%" : "30%";
$(this).animate({left: targetLeft},400);
checker ? checker = false : checker = true;
});
答案 1 :(得分:3)
一些问题:
if (checker = true)
您正在使用作业(=
)而不是检查相等性(==
或===
)。
您的检查是在绑定时间进行的
您想在点击事件中查看checker
。
像这样的东西可以解决这个问题:
var checker = new Boolean();
checker = true;
$("#div").click(function () {
var left = checker ? "10%" : "30%";
$(this).animate({left: left},400);
checker = !checker;
});
答案 2 :(得分:3)
首先,不要使用new Boolean()
。只需将其初始化为var checker = true;
其次,您在第一个条件(checker = true
)中使用赋值运算符。
第三,你没有在每次点击时执行条件。
第四,你的代码非常复杂。这是一个示例:
var checker = true;
$('#div').click(function() {
$(this).animate({
left: checker ? "10%" : "30%"
});
checker = !checker;
});
答案 3 :(得分:1)
您不应该将多个事件处理程序附加到与您相同的对象上。这是一个更清晰,更简单的版本,它与您的代码应该做的事情相同。如您所见,它只使用一个事件处理程序。
var checker = true;
$('#div').click(function(){
if(checker){
$(this).animate({left: "10%"},400);
checker = false;
} else {
$(this).animate({left: "30%"},400);
checker = true;
}
});
此外,您在第一个if语句(单=
)中执行分配,而不是使用==
来比较您的操作数。
答案 4 :(得分:0)
您需要分配一次点击事件,并在其中执行逻辑:http://jsfiddle.net/kS7KE/2/
var checker = new Boolean();
checker = true;
$("#div").click(function () {
if (checker == true){
$(this).animate({left: "10%"},400);
checker = false;
}
else{
$(this).animate({left: "30%"},400);
checker = true;
}
});
答案 5 :(得分:0)
使用此
var checker = new Boolean();
checker = true;
$("#div").click(function () {
if (checker == true){
$(this).animate({left: "10%"},400);
checker = false;
}
else
{
$(this).animate({left: "30%"},400);
checker = true;
}
});
答案 6 :(得分:0)
var checker = true;
$("#div").on('click', function () {
if (checker == true) {
checker = false;
$(this).animate({
left: "10%"
}, 400);
} else {
$(this).animate({
left: "30%"
}, 400);
checker = true;
}
});
答案 7 :(得分:0)
试试这个:
var checker = true;
$("#div").on('click', function () {
var left = checker ? '10%' : '30%';
$(this).animate({left: left},400);
checker = !checker
});