2014-10-28 8 views
0

Я работаю с этим скриптом, и его ум ошеломляет, поскольку он выглядит так, как будто он должен работать правильно, но это не так. Поэтому я обращаюсь ко всем вам за дополнительным взглядом на то, что мне не хватает.Отключить затем Добавить Div

Ситуация: В основном то, что я пытаюсь сделать, это щелкнуть отделить div, а затем, когда выбран другой переключатель, добавьте div обратно в свое положение.

Я включил JSFiddle, так что вы можете видеть, что я не могу быть полностью покинуть трек: http://jsfiddle.net/heykate/pusk6ezx/

При загрузке пользователь представлен с двумя вариантами поддержки или надувной с размером по умолчанию, выбранном по размеру поддержки с другими скрытыми размерами моделей. Это нормально. Я знаю, что в конечном итоге я хочу изменить эту первую строку кода из hide() для detach().

Как только я перехожу к варианту второго стиля, он отображает вторую ширину моделей, как это предполагалось, однако, если я должен был вернуться к первому варианту стиля. Div, который я первоначально отключил, по-прежнему скрыт и не будет .append() в моем коде.

Вот что мой сценарий выглядит следующим образом:

$(document).ready(function(){ 
    $('#5e8a1520d82ed2834919fda63f4a3f84').hide();    
    $('input[type="radio"]').change(function(){ 
      if($(this).attr("value")=="489"){ 
       $("#b6304c97422f08727702021e2c6c7cda").append(".rightCol"); 
       $("#5e8a1520d82ed2834919fda63f4a3f84").detach();     
       } 
      if($(this).attr("value")=="488"){ 
       $("#b6304c97422f08727702021e2c6c7cda").detach(); 
       $("#5e8a1520d82ed2834919fda63f4a3f84").show(); 
      } 
     });  
    }); 

Пожалуйста, дайте мне знать, что я пропускаю. В основном причина, почему я делаю это, чтобы начать с является

  1. Чтобы сделать его менее запутанным на переднем конце и
  2. , поскольку по умолчанию установлены (для обоих размеров) они получают пюре в информации заказа продукции, поэтому, если бы я мог очистить другую радиостанцию ​​с проверкой ширины или отсоединить ее и предотвратить ее, я думаю, что все будет хорошо.

ответ

1

.detach УДАЛИТЬ элемент из DOM. Поскольку он больше не находится в DOM, когда вы пытаетесь выполнить .show() позже, его больше нет в dom, и поэтому он не может быть использован/доступен. Вот почему .detach() возвращает узел вы удалили, в случае, если вы хотите повторно использовать:

foo = $('#blahblah').detach(); // 'foo' now contains the detached now 

$('#otherplace').attach(foo); // reinsert the foo element we detached. 
+0

Так как Foo = а отсоединение Wouldnt присоединять просто отрицают ее, и она по-прежнему будет оказывать как отдельно стоящий пункт ? –

+0

Да, если вы запустили этот точный код. Я не знаю, почему ты отступаешь. почему не просто '.hide()' элемент, который вы не хотите видеть? detach изменяет дерево DOM и физически вырезает из него материал. –

+0

Я изначально настроил его, чтобы просто скрыть, который теперь реализован на нашей странице, но переключатель для скрытого div предварительно выбран, поэтому он сочетается с выделенным, который был виден. если это имеет смысл. –