2015-04-10 10 views
0

У меня есть следующий код, который добавляет элементы в документ, если установлен соответствующий переключатель. Это прекрасно работает, однако мне нужен способ удалить элементы, если переключатель не установлен.jQuery удалять элемент, если переключатель радио не установлен

Вот что у меня есть до сих пор?

// for each radio button 
$('input[type=radio]').each(function(){ 

    // if it is checked 
    if($(this).is(":checked")) 
     { 
     var cur = $(this).val(); 
     // append an input text element only if it does not already exist 
     if(!$('#characterList input:text').is(function(i,e){ return e.value==cur && e.name=='data['+cur+']'; })) 
     { 
     $('#characterList').append('<input type="text" name="data[' + $(this).val() + ']" value="' + $(this).val() + '" />'); 
     } 
    } 
    else 
    { 
    // otherwise remove element if radio button not checked 
    $('#characterList').remove('<input type="text" name="data[' + $(this).val() + ']" value="' + $(this).val() + '" />'); 
    } 

    }); 
}); 

.remove(...) ничего не делает. Что я здесь делаю неправильно?

+0

для реферирования ce http://stackoverflow.com/questions/20809448/adding-and-removing-elements-dynamically-based-on-checkbox-values ​​ –

ответ

4

remove() не работает подобный. Вы должны указать селектор, чтобы выбрать элемент, который вы хотите удалить. Это можно сделать так:

$('#characterList').remove('input[value="' + $(this).val() + '"]'); 

Или, наоборот:

$('#characterList').find('input[value="' + $(this).val() + '"]').remove(); 

Кроме того, вместо того, чтобы использовать $(this).is(":checked") и $(this).val(), вы можете просто использовать:

if (this.checked) 

И:

var cur = this.value; 
+0

Спасибо! Это сработало! – user3574492