jquery - 删除并重新创建对象jquery

标签 jquery

我创建这段代码来“分离”和“重新附加”我的项目,但它不起作用。

为什么?

$( "#ciao" ).remove();


$('#condizionale').on('change', function() {
  if ($('#velux').is(':selected')) {
    var el = $('#sel-destination-tour').detach();
  }; 
});

$('#condizionale').on('change', function() {  
   if ($('#zanzariera').is(':selected')) {
     $('#sel-destination-tour').append(el);
   };
});

我想在选择“velux”时删除该项目,并在选择“zanzariera”时重新创建它。

fiddle :http://jsfiddle.net/dxq3msht/1/

最佳答案

这是因为 el 是第一个事件处理程序的局部变量,即在第二个 #condizionale 的更改处理程序中,此类变量不存在,您将得到一个ReferenceError。在外部上下文中定义变量。

另一个问题是在第二个处理程序中使用 $('#sel-destination-tour').append(el) 。分离后,查询将返回一个空集,因为分离的元素在 DOM 中不存在。请使用 el 元素及其 .appendTo 方法。另外,将元素附加到元素本身并没有多大意义。您应该(重新)将该元素附加到其目标父元素。

var el;
$('#condizionale').on('change', function() {
  if ($('#velux').is(':selected')) {
     el = $('#sel-destination-tour').detach();
  }; 
});

$('#condizionale').on('change', function() {  
   if ($('#zanzariera').is(':selected') && el) {
     el.appendTo('#targetElement');
   };
});

另请注意,在这种情况下您不需要定义 2 个更改处理程序。您可以将第二个处理程序的逻辑移至第一个处理程序中并删除第二个处理程序。

关于jquery - 删除并重新创建对象jquery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32992674/

相关文章:

javascript - 如何在 Javascript 中创建异步函数?

jquery - 在 Ember 中渲染模板后执行脚本

javascript - 将里程表绑定(bind)到 Datalist 和 gridview

javascript - 为什么我的 jquery 日期选择器在我的 asp.net 代码中不起作用?

jquery - 在 jquery 中使用 css calc()

javascript - jQuery 在 IE 中冲突悬停/切换状态?

javascript - 在javascript中下载数据是否有数据大小限制

javascript - div 磁贴上的 Jquery 单击事件不起作用

javascript - Click evnt 触发参数未定义

javascript - JQuery slider 不可见但可以工作