2014-10-03 35 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