2014-10-03 31 views
0

我在javascript替换函数中遇到了麻烦。请指出我哪里可能是错的。我有一个包含“一,二,三,四”的值。取消选中复选框后,复选框值删除形式我的uniqueList值。字符串替换没有工作里面的复选框在jQuery中取消选中事件

<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 is;

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

+0

如果你想每次都提醒它,那么把'alert'放在处理程序中 - 你的代码可以很好地从字符串中移除。 – tymeJV 2014-10-03 13:59:04

+0

@tymeJV我想要在处理程序外部完成字符串值的确定。这是处理程序内部的工作。但是,我无法在经理人之外获得这个价值。 – 2014-10-03 14:00:54

+0

你在外面!你的代码不会对它做任何事情! – tymeJV 2014-10-03 14:01:20

回答

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