0

我有以下.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选择中更改选项以隐藏与类对应的所有 divinsightsgraphs并从它的所有输入中删除绿色类。在我选择了四个选项之一后,一切正常,但是如果我选择另一个选项,则单击按钮将不会变为绿色,并且 div 也不会显示。它不运行这段脚本:

$("#newLikes").on('click', function(){
    $(this).toggleClass('green');
    $('#dailyNewLikes').toggle();
    return false;
});

这应该在按钮的绿色和红色之间切换,并且它应该隐藏或显示 div。例如,对于第二个选项,ajax 调用是正确的,但是按钮没有获得绿色类,并且没有显示相应的 div。我的代码有什么问题?是什么导致了这个问题?另一个奇怪的事情是,第 3 个选项有效,但第 4 个选项无效...

4

1 回答 1

1

当我检查你的代码时。似乎您将一些事件放在“更改”事件中。当更改已触发时,此处的问题将再次重新运行内部的所有事件。所以这会导致你的功能出现问题。最好将这些事件分离到更改之外并创建一个闭包函数,以便您可以从外部获取您想要的那些数据。

于 2013-05-10T14:22:41.090 回答