3

环境

我想要的是

复制该框,但从复制的孩子中删除“hure”类

要克隆的盒子的结构

<div name="box">
    <a .../>
    <span..../>
    <span..../>
    <div class="eye"> <img class="hure"..../></div>
...
</div>

2考虑

  • 我使用通用功能进行拖动和克隆,所以只有 10% 的情况下会有一个 img 标签,并且可以找到类“hure”,在其他情况下还有其他输入字段。
  • 克隆的元素位于原始元素之后的 dom 结构中(可能对搜索很重要)。

我的做法:

结果这两个类都被删除了,为什么不仅是克隆?

helper : function(ev,el) { 
        if ($(this).find(".hure").length > 0){
        return($(el).find(".hure").removeClass("hure").clone());}
        else 
        {
        return($(this).clone());}
        },

感谢您的帮助,自从尝试做那件事几个小时以来,我就迷路了。我找不到将原始代码与 ***g 克隆不同的代码。

编辑

另一种方法是在克隆之后这样做,我已经尝试过但没有成功。

我的失败方法

if ($(this).find(".hure").length > 0){ $(this).find(".hure").eq(1).removeClass("hure");}

解决方案

stop: function() {
        if ($(".hure").length>0){
        $(".hure:eq(1)").removeClass("hure");}
        }
4

2 回答 2

3

jsFiddle Demo

我想出了这个解决方法。基本上,一旦拖动运动停止,您就可以绑定一个事件。当您在停止事件中克隆元素时,您可以随意放置它。此时您应该操作克隆。在演示中,它的类“hure”被移除,并被放置在主体中。可以在这里确定放置在别处。

$('.box').draggable({
 helper: 'clone',
 stop: function(ev,ui){
  //clone helper
  var copy = $(this).clone();
  //use exposed api to set position
  copy.position(ui.position);
  copy.offset(ui.offset);
  //search for the class in copy and remove it
  $(".hure",copy).removeClass("hure");
  //place element (this may affect position/offset)
  document.body.appendChild(copy[0]);
 }
});
于 2013-09-23T18:55:56.580 回答
0

试一试..先克隆,然后删除克隆上的类:

function (ev, el) {
    var $cloned = $(this).clone();
    $cloned.find(".hure").removeClass("hure");
    return $cloned;
}
于 2013-09-23T18:50:52.827 回答