【问题标题】:How to remove HTML Element from variable containing HTML?如何从包含 HTML 的变量中删除 HTML 元素?
【发布时间】:2012-10-11 16:01:11
【问题描述】:

我有一个 jQuery var,其中包含我要附加到页面的 HTML。

在将 HTML 元素附加到页面之前,我需要删除它,但我似乎无法过滤它。

例如变量包含;

<div class="block1"></div>
<div class="block2"></div>

我在追加之前尝试过这样的过滤:

var mydata = $(mydata).filter('.block1');

var mydata = mydata.filter('.block1');

但这些都不起作用。有什么建议吗?

【问题讨论】:

  • mydata 已经设置在某个地方了吗?你试过$("div").filter('.block1').remove();或者$("div").filter(return $(this).hasClass(".block1")).remove();吗?
  • 效果很好。 jsfiddle.net/rns4h

标签: javascript jquery-ui jquery


【解决方案1】:

直接应用于字符串的过滤器有时会给出字符串结果,将元素添加到 DOM 然后应用过滤器是安全的。将 html 分配给 DOM 中的某个临时元素,从该临时元素中获取过滤后的项目并将其分配给所需的元素。

$('#TemporaryElemntToAddHtml').html(mydata);

    $('#ElemntToAddHtml .block1').each(function(){
         $('#ElemntToAddHtml').append($(this));
    });

$('#TemporaryElemntToAddHtml').remove();

【讨论】:

    【解决方案2】:

    试试.remove()

    $('.block1').remove();
    

    var mydata = $(mydata).remove('.block1');
    

    【讨论】:

    • 这只是将 mydata 返回为空?
    【解决方案3】:

    $.filter 并没有按照你的想法去做。

    http://api.jquery.com/filter/

    我会尝试 $(mydata).remove('.block1');

    【讨论】:

      【解决方案4】:

      您是否尝试过 .remove 功能?

        var mydata = $('<div class="block1"></div>
                       <div class="block2"></div>');
        mydata.remove('.block1');
      

      【讨论】:

      • 我认为您将 selectorfunction 混淆了...只是为了正确。
      • @Mario De Schaepmeester,是的,已修复
      • 这似乎不起作用。我想知道它是否与从 ajax 请求传回的变量有关,但我看不出这个变量会有什么不同。
      • 您是否将 ajax 结果转换为 jquery 元素?例如:$(myresult)
      【解决方案5】:

      使用splice原生方法在元素索引处移除,移除1项。

      mydata.splice( mydata.filter('.block1').index(), 1 );
      

      注意拼接时不要添加 mydata = mydata.splice(..) ,因为这将返回删除的元素。

      否则使用 jQuery 的 remove 方法,正如一些人已经说过的那样。

      【讨论】:

        猜你喜欢
        • 2017-10-02
        • 2011-03-08
        • 2014-10-12
        • 2015-07-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-01
        • 2021-10-02
        相关资源
        最近更新 更多