jQuery交换点击图像和if/else
问题描述:
Im卡住了,Im在某人点击时设置了一个变量,然后测试了是否存在该变量并执行其他操作。它的一个简单的脚本,我可能会过时,会喜欢某人的想法。jQuery交换点击图像和if/else
$('.view-alternatives-btn').live('click', function() {
//$("#nc-alternate-wines").scrollTo();
//$('.nc-remove').toggle();
var showBtn = null;
if (showBtn == null) {
$('.view-alternatives-btn img').attr("src","../images/wsj_hide_alternatives_btn.gif");
$('#nc-alternate-wines').show();
showBtn = 1;
console.log(showBtn);
}
else if (showBtn == 1) {
$('.view-alternatives-btn img').attr("src","../images/wsj_view_alternatives_btn.gif");
$('#nc-alternate-wines').hide();
console.log("this " + showBtn);
}
return false;
});
答
单击时该变量将永远不存在,因为它在函数内初始化,然后在函数结束时丢失。
如果您想在点击之间存储它,请在点击处理程序之外创建它。
var showBtn = null;
$('.view-alternatives-btn').live('click', function() {
//$("#nc-alternate-wines").scrollTo();
//$('.nc-remove').toggle();
if (showBtn == null) {
$('.view-alternatives-btn img').attr("src","../images/wsj_hide_alternatives_btn.gif");
$('#nc-alternate-wines').show();
showBtn = 1;
console.log(showBtn);
}
else if (showBtn == 1) {
$('.view-alternatives-btn img').attr("src","../images/wsj_view_alternatives_btn.gif");
$('#nc-alternate-wines').hide();
console.log("this " + showBtn);
}
return false;
});
答
showBtn
是一个局部变量,所以它的值不会在click
事件中持续存在。
移动var showBtn = null;
以外的click
处理程序。
但是,最好的方法是调用jQuery的toggle
method。 (除toggle
不能与live
一起使用)
答
您声明showBtn
为局部变量,所以它只存在直到您的点击处理程序结束。你需要一个全局变量,如果你想将它设置为1第一次点击,并能够在第二次点击时检查1。
答
第一个问题是变量showBtn
是local
的功能,所以它被重新定义每次执行脚本..
其次,你正确的检查之前,将其值设置..所以它会总是设置为null
..
由于您将其与live
方法绑定,这意味着动态元素,所以我会使用.data()
方法。
$('.view-alternatives-btn').live('click', function() {
var showBtn = $(this).data('showBtn');
//$("#nc-alternate-wines").scrollTo();
//$('.nc-remove').toggle();
if (showBtn) {
$('.view-alternatives-btn img').attr("src","../images/wsj_hide_alternatives_btn.gif");
$('#nc-alternate-wines').show();
$(this).data('showBtn',true);
console.log(showBtn);
}
else{
$('.view-alternatives-btn img').attr("src","../images/wsj_view_alternatives_btn.gif");
$('#nc-alternate-wines').hide();
console.log("this " + showBtn);
}
return false;
});
答
太棒了,感谢大家的帮助!
我明白了!
var showBtn = 1;
$('.view-alternatives-btn').live('click', function() {
//$("#nc-alternate-wines").scrollTo();
//$('.nc-remove').toggle();
if (showBtn == 1) {
$('.view-alternatives-btn img').attr("src","../images/wsj_hide_alternatives_btn.gif");
$('#nc-alternate-wines').show();
showBtn = 0;
console.log(showBtn);
}
else {
$('.view-alternatives-btn img').attr("src","../images/wsj_view_alternatives_btn.gif");
$('#nc-alternate-wines').hide();
console.log("this " + showBtn);
showBtn = 1;
}
return false;
});
如果按钮被点击3次会怎样? – SLaks 2010-06-02 13:24:23