Javascript jQuery一个函数多次重新激活

Javascript jQuery一个函数多次重新激活,javascript,jquery,events,onclick,Javascript,Jquery,Events,Onclick,我有许多每个都包含另一个div,这是我的按钮。我有一个.one('click','.button',function(){})在每次单击时激活,并在其他地方的单个div中增加一个数字 var barPrimC = 25; var barPrimN = 6; var barPrimS = 5; var barPrimT = 48; var barSecMajC = 11; var barSecMajN = 2; var barSecMajS = 3; var barSecMajT

我有许多
每个都包含另一个div,这是我的按钮。我有一个
.one('click','.button',function(){})在每次单击时激活,并在其他地方的单个div中增加一个数字

 var barPrimC = 25;
 var barPrimN = 6;
 var barPrimS = 5;
 var barPrimT = 48;

 var barSecMajC = 11;
 var barSecMajN = 2;
 var barSecMajS = 3;
 var barSecMajT = 19;

var incSL

$('.complete, .incomplete').click(function() {

    $('.classInfo').slideUp();

    if($(this).next().is(':hidden') == true) {

        $(this).addClass('on');

        $(this).next().show('slow');

        incSL = this;

        // ADD to List
        $(".shortAdd").one('click','.button', function(){

                $(this).text('Remove from Short List');

                $(this).parent().attr("class", "shortRemove");

                $(incSL).attr("class", "incompleteSL");

                $('.classInfo').slideUp();

                barPrimS++;
                barSecMajS++;

                var updateBarP = $(".bpS").find(".b-text-right").text(barPrimS);

                var cat = $(this).data("category");
                var catBar = $("."+cat).find(".bCommonS");
                var updateBarS = catBar.filter(".bsS").find(".s-text-right").text(barSecMajS);


        });

        // REMOVE from List
        $(".shortRemove").one('click','.button', function(){

                $(this).text('Add to Short List');

                $(this).parent().attr("class", "shortAdd");

                $(incSL).attr("class", "incomplete");

                $('.classInfo').slideUp();

                barPrimS--;
                barSecMajS--;

                var updateBarP = $(".bpS").find(".b-text-right").text(barPrimS);

                var cat = $(this).data("category");
                var catBar = $("."+cat).find(".bCommonS");
                var updateBarS = catBar.filter(".bsS").find(".s-text-right").text(barSecMajS);

        });

    }

 });
我最初使用的是
上的
,但它激活了我的两种方法(用于添加和删除单击)

如果我有:

<div>1st time div CLICKED (runs 1 time)</div>
<div>2nd time div CLICKED (runs 2 times)</div>
<div>3rd time div CLICKED (runs 3 times)</div>
<div>4th time div CLICKED (runs 4 times)</div>
第一次单击div(运行1次)
第二次单击div(运行2次)
第三次单击div(运行3次)
第四次单击div(运行4次)
因此,基本上如果barPrimS从5开始,当运行
add
click方法时,它会变为6。当运行单独的
add
click方法时,它会转到8。然后是11,然后是15


我搞不懂为什么会这样,请帮帮我!应该只增加1(5,6,7,8)。我尝试了
barPrimS=barPrimS+1
和其他方法,但它们都是一样的

我最终从父对象中删除了
.shortAdd
.shortRemove
.on('click')
方法,并没有按照建议进行嵌套。然后,我将short和add组合为
.shortAdd
下的
if/else
语句,并简单地将
.toggleClass()
.shortRemove
类组合,检查它是否存在


这为我修正了所有的错误

。一个
将只执行一次。。建议:Never nest Event我有很多不同的东西,比如说,用户可以添加,因此我需要能够动态更改页面的一部分,以及更改单击的原始按钮的状态。这允许他们单击原始按钮将状态更改回原来的状态。每个连续的div也有自己的状态。