2012-10-17 68 views
0

我想在這裏讓複選框追加一個div,當它是檢查並刪除相同的div時,它是取消選中。我相信問題是.remove()被調用時..我只是不知道問題是什麼。 非常感謝您的幫助!jquery .remove不起作用(對我來說)

$(document).ready(function(){ 
     $('.checked_locations').click(function(){ 
      if ($(this).is(':checked')) 
      { 
       var value = $(this).val(); 
       $('#locations_filter').append("<div id='hidden_"+value+"'><input type='hidden' name='loc_filter[]' value='"+value+"' /></div>"); 
      } 
      else 
      { 
       //alert('not checked'); 
       $('#locations_filter #hidden_'+value).remove(); 
      } 
     }); 

    }); 
+0

你的價值是什麼?你確定沒有空間或特殊字符? –

+1

如果你做了'console.log($('#locations_filter #hidden _'+ value));'它是否提供了實際的元素? –

+0

該值是一個沒有任何空格或特殊字符的字符串 – DanJen

回答

4

value在您的else語句中未定義。將其聲明移至if語句之外。

$(document).ready(function() { 
    $('.checked_locations').click(function() { 
     var value = $(this).val(); 
     if ($(this).is(':checked')) { 
      $('#locations_filter').append("<div id='hidden_" + value + "'><input type='hidden' name='loc_filter[]' value='" + value + "' /></div>"); 
     } 
     else { 
      //alert('not checked'); 
      $('#hidden_' + value).remove(); 
     } 
    }); 
});​ 
+0

謝謝Kevin和Brian!完美 – DanJen

+0

接受答案:P – Mutmatt

4

您試圖從不同的塊引用值變量到您第一次定義它的位置:它超出了範圍。您需要在if語句之外移動var value = $(this).val();

0

只需使用此代碼:

$('#hidden_'+value).remove(); 

元素ID必須是唯一的,所以你會被引用的唯一項目。

+0

該值已經使其具有唯一性 – DanJen

+0

我應該說,沒有必要使用兩個id來引用項目 – geedmo

+0

@geedmo:通常不是,但有(有限)情況可能有用。想象一下你想在多個頁面上使用一個腳本。這兩個頁面都有#elem2元素,但並不是所有元素都嵌套在#elem1元素中的#elem2元素。在這種情況下,您可能需要使用像#elem1#elem2這樣的選擇器。 –

0
else 
{ 
    var value = $(this).val(); 
    $('#locations_filter #hidden_'+value).remove(); 
} 
0

一個更優雅的方式做你想要將是什麼:

$(document).ready(function(){ 
    var element; 
    $('.checked_locations').click(function(){ 
     if ($(this).is(':checked')) 
     { 
      var value = $(this).val(); 
      element= $('#locations_filter').append("<div id='hidden_"+value+"'><input type='hidden' name='loc_filter[]' value='"+value+"' /></div>"); 
     } 
     else 
     { 
      //alert('not checked'); 
      element.remove(); 
     } 
    }); 

}); 

這是一個closure,這是一個非常強大的技術能夠在動態語言。如果您打算在JavaScript中進行認真的開發,那麼很好地學習它。

相關問題