我有以下.change()
功能:
$('#accmenu').change(function() {
$(".insightsgraphs div").hide();
$(".insightsoptions input").removeClass("green");
$("#newLikes").one('click', function () {
$.ajax({type:'GET', url: 'newLikes.php', data:$('#ChartsForm').serialize(), success:
function(response) {
var json = response.replace(/"/g,'');
json = "[" + json + "]";
json = json.replace(/'/g,'"');
var myData = JSON.parse(json);
var myChart = new JSChart('dailyNewLikes', 'line');
myChart.setDataArray(myData);
myChart.setSize(960, 320);
myChart.setAxisNameX('');
myChart.setAxisValuesColorX('#FFFFFF');
myChart.setAxisNameY('');
myChart.setTitle('Daily New Likes');
myChart.draw();
}});
return false;
});
$("#newLikes").on('click', function(){
$(this).toggleClass('green');
$('#dailyNewLikes').toggle();
return false;
});
$("#unlikes").one('click', function () {
$.ajax({type:'GET', url: 'unlikes.php', data:$('#ChartsForm').serialize(), success:
function(response) {
alert(response);
$("#dailyUnlikes").html(response);
}});
return false;
});
$("#unlikes").on('click', function(){
$(this).toggleClass('green');
$('#dailyUnlikes').toggle();
return false;
});
});
任何时候我从accmenu
选择更改选项以隐藏与insightsgraphs
类对应的所有div,并从其所有输入中删除绿色类。在我选择了四个选项中的一个之后,一切都按照它应该工作但是如果我选择另一个,则单击按钮不会变为绿色,并且也不会显示div。它没有运行这段脚本:
$("#newLikes").on('click', function(){
$(this).toggleClass('green');
$('#dailyNewLikes').toggle();
return false;
});
应该在按钮的绿色和红色之间切换,并且它应该隐藏或显示div。例如,对于第二个选项,ajax调用正确,但按钮没有获得绿色类,并且未显示相应的div。我的代码有什么问题?是什么导致了这个问题?另一件奇怪的事情是,第3个选项正在运行,但第4个选项没有......
答案 0 :(得分:1)
我检查了你的代码。看来你把一些事件放在了“改变”事件中。触发更改后,此处的所有事件将再次重新运行。所以这会导致你的功能出现问题。最好将这些事件与更改分开,并创建一个闭包函数,以便您可以从外部获取所需的数据。