请看以下小提琴:http://jsfiddle.net/K9NjY/

我在此代码上花费了3-4个小时,并且将其范围缩小到了最短的版本,现在我陷入了困境。

问题:
1.点击“ divOne”
2.单击开关DivNames
3.点击“ divTwo”

*为什么divOne仍处于警报状态?如何停止呢? *逻辑告诉我,当我们单击divTwo时,我们只会收到一个警告,提示“ divTwo”

请注意,doSomething()具有一个由其中的click触发的功能。这不能更改,即$("." + divName).click(function(){...});必须保留在doSomething()内部

我该怎么办?

最佳答案

使用off删除事件监听器,然后再次添加,切换类名将不会取消绑定现有事件监听器-

function doSomething(divName){

    $(".action").off().addClass(divName).html(divName).click(function(){
        alert(divName);
    });
}


FIDDLE

09-30 10:37