【问题标题】:jQuery copy content and remove class from it before appendingjQuery 在追加之前复制内容并从中删除类
【发布时间】:2014-03-18 12:19:43
【问题描述】:

我想使用 jQuery 克隆 div 的内容,但是我想从复制的内容中找到一个类 active 并在使用appendTo 函数之前将其删除。

例如,我有这个代码:

<div class="box">
    <p>text</p>
    <div class="random active"></div>
</div>

我可以用这个复制上面的代码:

var content = $(this).find('.box').html();

现在如何从 var content 中找到类 active 并在 appendTo 之前将其删除?

请注意,我不想从我复制内容的实际 div 中删除类,我只想从复制的代码中删除,以便它不包含在克隆 div 中。

谢谢。

【问题讨论】:

    标签: javascript jquery html


    【解决方案1】:

    试试,

    var content = $(this).find('.active').removeClass('active').closest('.box').html();
    

    根据您的新要求,

    var content = $(this).find('.box').clone().find('.active').removeClass('active');
    

    【讨论】:

    • .removeClass 将删除所有出现的active 类还是只删除第一个?
    • 将从 $(this) 引用的后代中删除所有活动类。
    • 感谢您的回答,但正如我所说,我只想从复制的内容中删除,而不是从原始 div 中删除,此代码也将从原始 div 中删除。
    • 我认为对find('.active')removeClass('active') 没用...您可以删除活动课程而无需查找。
    • 对不起......你是对的......我使用.children()选择插入元素......你的代码是正确的。我的错。
    【解决方案2】:

    我的解决方法:

    var content = $(this).find('.box').children().clone().removeClass("active"); 
    

    content 是一个 jQuery 数组,其内容为 .box(内容的克隆),其中所有元素都没有 active 类。

    另一种选择:

    如果您只需要从元素中删除类,您可以添加一个步骤:

    var content = $(this).find('.box').children().clone();
    content.find(".random").removeClass("active");
    

    如何使用内容变量:

    现在您可以在需要的地方.appendTo() content

    content.appendTo("body"); //for example
    

    调试代码:

    使用:alert(content.html()) 试试这个:

    var content = $(this).find('.box').clone();
    content.children().removeClass("active");
    alert(content.html()); //HTML string but it seems the best way to use DOM
    

    但这种方式更好,使用控制台:

    var content = $(this).find('.box').children().clone().removeClass("active");
    console.log(content);   // array of jQuery objects not simply HTML string
    

    一个例子:

    示例:http://jsfiddle.net/Frogmouth/4dYM4/1/

    享受吧,青蛙。

    【讨论】:

      【解决方案3】:

      你可以这样做:

      $(content).find('.active').remove().appendTo('body');
      

      【讨论】:

        【解决方案4】:

        试试

        content = $(content).find('.active').removeClass('active')
        


        OP评论后更新

        Fiddle Demo

        var content = $(this).find('.box').clone();
        content = content.find('.active').removeClass('active').closest('.box');
        alert(content.html());
        

        【讨论】:

        • 感谢您的回答。我正在寻找类似的东西,但在此之后,如果我提醒(内容);我无法获取内容,它说对象对象。如何获取变量中的内容?
        • @user966582 检查更新的答案working demo
        【解决方案5】:

        你可以这样做。

        var content = $(this).find('.box').clone();
        $(content).find('.active').removeClass('active');
        

        【讨论】:

          【解决方案6】:

          移除和追加元素的最佳方式

                  content = $('#content').clone();
                  $('#content').remove();
                  content.appendTo('#perntElement');
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2013-07-31
            • 1970-01-01
            • 2018-01-16
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2023-03-24
            • 1970-01-01
            相关资源
            最近更新 更多