Поскольку вы присваиваете значение только переменной nom
внутри "if-clause", эта переменная всегда будет неопределенной внутри "else-clause".Это означает, что вы выбираете «#undefined», который не существует, поэтому ничего не удаляется.
Я думаю, что это будет работать, если вы поместите инициализацию (а не только определение, как это происходит автоматически) вашегопеременная вне конструкции if / else, например:
$(function() {
$('input:checkbox').change(function(){
var nom = $(this).attr("value");
if ( $(this).is(':checked') ) {
$('body').append($("<div id="+nom+">Switch "+nom+"</div>"));
}
else {
$("#" + nom).remove();
}
});
Что касается вашей второй проблемы:
Я не знаком с тем, что вы говорите на стороне сервера о «переключателе».,Но так как ваш javascript работает на клиенте, вам просто нужно заново создать то, что создает SwitchGUI.Например, сначала создайте свой графический интерфейс, используя эту вещь SwitchGUI, затем посмотрите на сгенерированный HTML-код и точно воссоздайте его в своем javascript, где вы сейчас создаете свой div.