【问题标题】:Grab some text from a markup string using jQuery使用 jQuery 从标记字符串中获取一些文本
【发布时间】:2011-10-07 04:06:45
【问题描述】:

我有以下标记:

<span>
Some text blalablalalbal<br/><br/>
"You are Awesome" <br/><br/>
----What can I do for you?<br/><br/>
</span>

现在我想隐藏第一行并修改最后一行。

如何使用 jQuery 获取这些文本?

注意:

1:有多个类似代码块的实例,但文本不同。所以我将无法硬编码。我想知道我是否可以使用
标签以某种方式拆分它?

2:如果可以在C#的服务器端代码中完成,那也很好。

【问题讨论】:

    标签: c# javascript jquery asp.net html


    【解决方案1】:

    你可以和textnodes一起玩something like this


    更新

    var $nodes = $('span').contents().map(function(a,b){
        return (b.nodeType===3?b:null);
    });
    
    // hide first line
    $($nodes.get(0)).wrap('<span style="display:none;" />');
    $nodes.get(2).data = "foo";
    

    Working example of what I mean.

    【讨论】:

    【解决方案2】:

    CSS 有 :first-line 和 :last-line 修饰符。

    试试:

    span:first-line {
      display: none;
    }
    

    使用带有选择器的jQuery修改最后一行:

    var content = $('span:last-line').html();
    content += " - Modified";
    $('span:last-line').html(content);
    

    【讨论】:

    • 我没有测试过上面的代码,但是理论上应该可以的! :D
    • 我认为 jQuery 没有 :first-line 或 :last-line 选择器。
    【解决方案3】:

    可以拆分换行,修改数组:

    var elm = $('span'),
        lines = elm.html().split('<br>');
    
    lines.shift(); // removes the first
    lines[lines.length-3] += '-modified'; // modify the last
    
    elm.html(lines.join('<br>'));
    

    【讨论】:

      【解决方案4】:

      或者您可以将三行放在三个不同的带 id 的 span 中。 比如:

      <span>
      <span id="sentence1">Some text blalablalalbal</span><br/><br/>
      <span id="sentence2">"You are Awesome" </span><br/><br/>
      <span id="sentence3">----What can I do for you?</span><br/><br/>
      </span>
      

      并用 jquery 隐藏第一句话:

      $("span#sentence1").hide();
      

      【讨论】:

        猜你喜欢
        • 2022-07-06
        • 1970-01-01
        • 1970-01-01
        • 2015-08-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-11
        相关资源
        最近更新 更多