【问题标题】:in jQuery, how to remove an element that has only one whitespace?在 jQuery 中,如何删除只有一个空格的元素?
【发布时间】:2010-01-23 03:24:53
【问题描述】:

给定页面上的以下 HTML:

<div class='test'>
<p><span id='id1' class='test1 test2 test3'>test text 1</span></p>
<p><span id='id2' class='test1 test2'>test text 2</span></p>
<span class='test2'> </span>
<p><span id='id3' class='test1'>test text 3</span></p>
<p><span id='id4' class='test1 test3 test2'>text4</span></p>
</div>

如何使用 jQuery 完全删除第 4 行 &lt;span class='test2'&gt; &lt;/span&gt;

如果有帮助,我可以通过正则表达式找到它:

var re = new RegExp("<span[^>]*test2[^>]*> </span[^>]*?>");

而且我可以使用 jQuery 找到并删除该类的任何节点:

$("span[class*='test2']").remove();

但这会删除所有具有“test2”类的节点,这不是我想要的;我只想删除其中包含单个空格的那个。 $("span[class*='test2']:empty").remove(); 不起作用,因为该节点不是空的,并且有一个空格。

我觉得我很接近,但我错过了一些东西;我希望结果是:

<div class='test'>
<p><span id='id1' class='test1 test2 test3'>test text 1</span></p>
<p><span id='id2' class='test1 test2'>test text 2</span></p>
<p><span id='id3' class='test1'>test text 3</span></p>
<p><span id='id4' class='test1 test3 test2'>text4</span></p>
</div>

有什么线索吗?

【问题讨论】:

    标签: javascript jquery html tags


    【解决方案1】:
           $('span').each(function(){
                   var str = $(this).text().replace(/ /g,'');
                   if (str.length < 1){
                       $(this).remove();
                   }
              });
    

    【讨论】:

    • 这将删除所有空格并删除其中没有剩余字符的元素。
    【解决方案2】:

    应该这样做:

    $("span[class*='test2']").filter
                    (
                      function() {
                          return $(this).text() === " ";
                      }
                    ).remove();
    

    【讨论】:

    • 是的,我只想要一个空格,如标题中所述。
    【解决方案3】:

    我认为你不能匹配任何空格,因为 :contains() 不能做正则表达式。你可以循环它们,或者编写你自己的过滤器。

    $.extend($.expr[':'], {
        whitespace: function(el) {
            return $(el).text().search(/\s+/);
        }
    });
    

    【讨论】:

      【解决方案4】:

      适用于使用咖啡脚本并希望删除带有一个或多个空格的标签的人。

      for paragraph in $('p')
          str = $(paragraph).text().replace(/\s+/,'')
          if str.length < 1
              $(paragraph).remove();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-06
        • 2013-01-08
        • 2016-03-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多