【问题标题】:jQuery append not inserting detached elementsjQuery追加不插入分离的元素
【发布时间】:2013-09-07 11:13:27
【问题描述】:

我似乎无法为我使用 detach() 分离的元素添加附加功能

基本上我想做的是根据屏幕尺寸(大于 900 像素)从 DOM 中删除一些图像并将它们添加回来(小于 900 像素)。我正在使用enquire.js 处理断点,但我无法正确实现已删除元素的插入。

这是html:

<div class="mobile-slides">
  <a><img src="image.jpg" /></a>
  <a><img src="image2.jpg" /></a>
  <a><img src="image2.jpg" /></a>
</div>      

这是我正在使用的 js:

enquire.register("screen and (min-width: 900px)", {
    match : function() {
        var slides = $('.mobile-slides a').detach();
    },
    unmatch : function() {
        $('.mobile-slides').append(slides);
    }
});

分离似乎正在工作,但是当满足第二个条件时,什么都没有发生。我做错了吗?

编辑 代表我的愚蠢错误我只是在查询匹配函数中声明了变量“幻灯片”,因此它不适用于 unmatch 函数。

现在可以了:

var slides = $('.mobile-slides a');
enquire.register("screen and (min-width: 900px)", {
    match : function() {
        $('.mobile-slides a').detach();
    },
    unmatch : function() {
        $('.mobile-slides').append(slides);
    }
});

我也可以使用 remove() 来代替 detach()

【问题讨论】:

  • 你能提供一个重现问题的小提琴吗?
  • append(); 之前尝试console.log(slides); 看看您是否提供了要附加的内容..
  • 看起来是变量slides的作用域问题,你需要分享更多代码
  • 抱歉,最初的问题可能不够具体,我现在已经更新了。

标签: jquery append detach enquire.js


【解决方案1】:
slides.appendTo( '.mobile-slides' );

按钮点击示例代码,

var slides;
$( "button" ).click(function() {
  if ( slides ) {
    slides.appendTo( ".mobile-slides" );
    slides = null;
  } else {
    slides = $('.mobile-slides a').detach();
  }
});

【讨论】:

  • 请注意,这里slides 变量用作从null 到实际元素数组的切换。 if 语句使这项工作有效,否则将毫无用处!
猜你喜欢
  • 2012-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-07
  • 1970-01-01
  • 1970-01-01
  • 2012-05-12
  • 2013-02-25
相关资源
最近更新 更多