【问题标题】:How to find a not strong element inside of a paragraph如何在段落中找到不强的元素
【发布时间】:2015-05-05 01:08:06
【问题描述】:

我有一个这样的段落:

<p>
    <strong>Cost:</strong>
    $1,500 - $10,000 (see below for details)
</p>

我想先选择 strong 文本,然后选择 not strong 文本。

我正在尝试以下操作:

$('p').not('strong').html()

$('p:not("strong")')

但它似乎不起作用。

【问题讨论】:

  • 你很接近,但你的选择器表示“段落标签不是强标签”
  • 你想分别抓取每个文本吗?

标签: javascript jquery html jquery-selectors


【解决方案1】:

如果你需要p个不强的元素,那么你还需要结合:has选择器

$('p:not(:has(strong))')

用于获取没有强内容的文本节点文本:

$('p').clone().children().remove().end().text();//returns  $1,500 - $10,000 (see below for details)

用于获取强元素文本:

 $('p strong').text();//return Cost:

Working Demo

【讨论】:

    【解决方案2】:

    试试这个:

    $("p").clone().children().remove().end().text();
    

    【讨论】:

      【解决方案3】:

      试试

      var elems = $.parseHTML($("p").html()).filter(function(elem, i) {
        return elem.tagName === "STRONG" 
               || elem.previousSibling !== null 
                  && elem.previousSibling.tagName === "STRONG"
      });
      // `elems[0]`:`STRONG` element , `elems[1]`:`#text` node;
      // `$(elems).eq(0)`:jQuery object `$("strong")`,
      // `$(elems).eq(1)`:jQuery object `$("text")`
      console.log(
        elems[0], elems[1],  
        $(elems).eq(0).text(), $(elems).eq(1).text()
      );
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
      <p>
        <strong>Cost:</strong>
        $1,500 - $10,000 (see below for details)
      </p>

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-02-02
        • 2015-11-13
        • 1970-01-01
        • 2015-06-19
        • 1970-01-01
        • 2021-09-13
        相关资源
        最近更新 更多