【问题标题】:How to not select a span inside a class如何不在类中选择跨度
【发布时间】:2014-06-05 02:18:09
【问题描述】:

我有这个 HTML:

<div class="one">32<span class="one_span"> Years old</span></div>

我希望能够选择没有跨度文本的第一类文本。那可能吗?这是我尝试过的方法,但没有成功

 var age = $('.one:not(.one_span)').text(); 

【问题讨论】:

    标签: jquery


    【解决方案1】:

    使用contents():

    var age = $('.one').contents()[0]
    

    Here's a fiddle to demonstrate.

    contents()获取匹配元素集中每个元素的子元素,包括文本和注释节点。

    【讨论】:

    • 如果数字内有元素“
      32
      "
    • @circusdei:呃,不,你是对的。如果计算机关闭或由巧克力制成,它也不起作用。
    • 你真的认为数据会被验证吗?
    • @circusdei:谁知道呢? OP 很有可能首先生成 HTML。
    • 这是真的,但在这种情况下,在数字周围添加语义标记并以这种方式选择它会更有意义
    【解决方案2】:

    你可以parseInt,JSFiddle:http://jsfiddle.net/4qT4u/

    【讨论】:

    • 这实际上是一个伟大而简单的解决方案。谢谢。
    【解决方案3】:
    var text = $(".one")
        .clone()    //clone the element
        .children() //select all the children
        .remove()   //remove all the children
        .end()  //again go back to selected element
        .text()
    

    删除所有子元素,并将文本设置为剩余内容。

    工作小提琴:http://jsfiddle.net/G9SfB/ 来源:http://viralpatel.net/blogs/jquery-get-text-element-without-child-element/

    【讨论】:

      【解决方案4】:

      为了安全起见,克隆 div,从克隆中删除 span,然后从中获取文本:

      var cl = $('div.one').clone();
      cl.find('span').remove();
      var age = cl.text();
      

      【讨论】:

        【解决方案5】:

        在这里找到:https://stackoverflow.com/a/11348383/1524085

        var text = $('div').contents(':not(.one_span)').text();
        

        http://jsfiddle.net/6pRS3/

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-29
          • 2021-09-03
          • 2014-12-18
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多