字符串替换在jQuery中的checkbox uncheck事件中不起作用

时间:2014-10-03 13:56:27

标签: javascript jquery html

我在javascript替换功能方面遇到了麻烦。请指点我可能出错的地方。我的值包含" ONE,TWO,THREE,FOUR"。取消选中复选框后,复选框值将从我的 uniqueList 值中删除。

<input type="checkbox" name="attribute" class="attribute" value="ONE"> ONE
<input type="checkbox" name="attribute" class="attribute" value="TWO"> TWO
<input type="checkbox" name="attribute" class="attribute" value="THREE"> THREE
<input type="checkbox" name="attribute" class="attribute" value="FOUR"> FOUR

Javascript是;

var uniqueList = "ONE,TWO,THREE,FOUR";
$('.attribute').click(function() {
    var val = (this.checked ? 'checked' : 'unchecked');            
    if(val=='unchecked'){
        uniqueList =  uniqueList.replace($(this).val(),"");                       
    } 
});

alert(uniqueList);  //no uniiqueList value in alert

Demo

1 个答案:

答案 0 :(得分:1)

由于处理程序在声明之后,并不意味着它也将以相同的方式执行,因为它是一个事件处理程序,并且仅在通过代码或手动触发时才会被调用。因此,您需要在代码中触发它。

var uniqueList = "ONE,TWO,THREE,FOUR";
$('.attribute').click(function() {
    var val = (this.checked ? 'checked' : 'unchecked');
    if (val == 'unchecked') {
        uniqueList = uniqueList.replace($(this).val(), "");
    }
}).trigger("click"); // triggering it invokes the handler
alert(uniqueList); // it works now