分离图像,然后将其附加到分离的位置

Posted

技术标签:

【中文标题】分离图像,然后将其附加到分离的位置【英文标题】:Detaching an image then appending it back to where it was detached from 【发布时间】:2012-10-23 21:17:41 【问题描述】:

我的经验水平 - 我正在制作一个自定义滑块,这是我第一次使用 jQuery,但我认为我对 html、css 和 jquery 一起做什么有很好的了解,但是我的菜鸟仍然在继续。

我的问题 - 我标记了 17 个 div,我想删除 img 标签:

      <div class="slide" id="zero">
        <h2>April 1, 2011</h2>
        <img src="img/1_april12011.png"/><p>Lorem Ipsum</p>
      </div>
      <div class="slide" id="one">
        <h2>April 2011</h2>
        <img src="img/2_april2011.png"/> <p>Lorem Ipsum</p>
      </div>
      <div class="slide" id="two">
        <h2>August 2011</h2>
        <img src="img/3_aug2011.png"/><p>Lorem Ipsum</p>
      </div>

我可以通过使用 .detach() 和以下 jQuery 轻松做到这一点:

 $('.slide').delegate('click', function() 
      if(imageToAttach == null)
        attachLocation = $(this).find('id');
        imageToAttach = $(this).find('img').detach();
        console.log
      else
        $(imageToAttach).appendTo(attachLocation);
        console.log('trying to append ' + imageToAttach + ' to ' + attachLocation);
        attachLocation = $(this).find('id');
        imageToAttach = $(this).find('img').detach();
        console.log('detached ' + imageToAttach);
      );

我正在使用 var = imageToAttach 和 attachLocation 来跟踪删除了哪些图像以及删除了它的位置,因此我可以在需要时再次将其附加到该特定 div (单击另一个图像或向左和右键单击)所以如果我能得到这个 -- http://jsfiddle.net/lorenzo_vm/nbF8d/3/ -- jsfiddle 工作,那么我相信我可以做我想做的事。

几个小时后的研究和摆弄

我想我想知道我想做的事,我将使用 .hide() 和 .show(),但我仍然很好奇上面提到的发生了什么小提琴...也就是说,当我单击另一个 div 时,如何让 img 重新插入到它们所在的 div 中...如果您,善良的 *** 用户,不介意,您能否告知我有一种更简单的方法来将 div 分配给某种数组,而不是使用 id="zero" id="one" 等。

像这样?

var slides = $('.slide');
var numberOfSlides = slides.length;
var slideArray[] = null; 

我是否只需使用 for 循环将 slides.length 的索引分配给数组中的每个点?

for( var i=0;i<=numberOfSlides;i++)
   slideArray[i] = ?;

或者 var 幻灯片是一个数组?我有点困惑。

非常感谢!

迈克尔

【问题讨论】:

【参考方案1】:

这里。我更新了你的小提琴来做我认为你正在寻找的东西 - 主要是。不过不太确定,因为这种行为对我来说很奇怪,而且我不知道为什么要这样做......

http://jsfiddle.net/nbF8d/12/

这里是相关代码,可以浓缩成这样:

$(document).ready(function()
    var imageToAttach;
    var attachLocation;

    $('.slide').on('click', function() 
      if(imageToAttach != null)
        $(imageToAttach).appendTo(attachLocation);
      

      attachLocation = $(this);
      imageToAttach = $(this).find('img').detach();
   );
);
​

本质上,当您应该只存储对单击的元素的引用时,您试图找到一个元素“id”。

attachLocation = $(this);

这样 appendTo 有一个元素,而不仅仅是一个 id 的值(假设您使用 $(this).attr('id') 获取了实际的 id)

您的示例也没有声明变量或将侦听器置于就绪调用中。

另外请注意,我切换到 .on 而不是 .delegate - 请参阅:“从 jQuery 1.7 开始,.delegate() 已被 .on() 方法取代。”

【讨论】:

用我更新的新链接重试。我正在使用我碰巧在的 lorem ipsum 网站上的一些随机图像。我将它们更改为使用我自己的图像,以防有一些推荐阻止阻止您查看图像。例如,Firefox 没有显示远程图像。现在可以了。 谢谢!非常感谢您的帮助:)

以上是关于分离图像,然后将其附加到分离的位置的主要内容,如果未能解决你的问题,请参考以下文章

EF6 无法将分离的实体附加到上下文

当您分离然后重新附加项目集合时,TFS 2015 报告服务器会发生啥情况?

将矩形附加和分离到 QML 中的移动矩形

sqlserver 分离 附加 备份 数据库

使用Azure门户从虚拟机分离数据磁盘

如何分离SQL数据库,为啥我一分离就没有了