【问题标题】:jQuery / Remove <p> without losing hyperlink or read more goes below textjQuery / 删除 <p> 而不会丢失超链接或阅读更多内容位于文本下方
【发布时间】:2021-06-03 23:54:39
【问题描述】:

在文本旁边保留“阅读更多”并从 var content = $(".myClass p").html(); 中删除“p”的任何想法不丢失超链接?非常感谢..

      var show_char = 280;
      var ellipses = "... ";
      var content = $(".myClass").html();
      if (content.length > show_char) {
         var a = content.substr(0, show_char);
         var b = content.substr(show_char - content.length);

         var html = a + "<span class=\'abc\'>" + ellipses + "</span><span class=\'abc\' style=\'display:none\'>" + b + "</span><a class=\'read-more\' href=\'#\'>Read more</a>";        
        $(".myClass").html(html);
      }
      $(".read-more").click(function(e) {
         e.preventDefault();
         $(".read-more").text() == "Read more" ? $(".read-more").text(" Read less") : $(".read-more").text("Read more");     
         $(".myClass .abc").toggle();
      });
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div class="myClass">
  <p><a href="https://stackoverflow.com/">stackoverflow</a> is a question and answer site for professional and enthusiast programmers. It features questions and answers on a wide range of topics in computer programming. It was created to be a more open alternative to earlier question and answer sites such as Experts-Exchange.</p>
</div>

【问题讨论】:

  • 该链接是p 标签的一部分。您想要的确切最终结果是什么?没有父 p 的链接或仅包含链接的 p
  • 我想知道如何从 var content = $(".myClass p").html(); 中删除 'p'没有阅读更多内容就像现在一样在文本下方,并且不会丢失超链接,因为如果我在 var 内容上添加 p 我会丢失我的程序上的超链接..

标签: jquery


【解决方案1】:

只需要做一件小事,这应该可以正常工作。您可以包含子组合器 ( > ) 以在 .myClass 中捕获 p 标记,同时省略在第三行中写入标记,即 var content = $(".myClass").html();
我希望这有帮助!如果它有助于解决您的问题,请随时通过单击此答案左侧的 ✓ 将答案标记为已接受

var show_char = 280;
      var ellipses = "... ";
      var content = $(".myClass >*").html(); 
      
      if (content.length > show_char) {
        var a = content.substr(0, show_char);
        var b = content.substr(show_char - content.length);
        var html = a + "<span class=\'abc\'>" + ellipses + "</span><span class=\'abc\' style=\'display:none\'>" + b + "</span><a class=\'read-more\' href=\'#\'>Read more</a>";
        $(".myClass").html(html);
      }
      $(".read-more").click(function(e) {
         e.preventDefault();
         $(".read-more").text() == "Read more" ? $(".read-more").text(" Read less") : $(".read-more").text("Read more");     
         $(".myClass .abc").toggle();
      });
html {
  font-size: 18px;
  font-family: sans-serif
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<div class="myClass">
  <p><a href="https://stackoverflow.com/">stackoverflow</a> is a question and answer site for professional and enthusiast programmers. It features questions and answers on a wide range of topics in computer programming. It was created to be a more open alternative to earlier question and answer sites such as Experts-Exchange.</p>
</div>

【讨论】:

  • 谢谢,但问题是我不想在 var content 上使用 'p',这就是问题所在。即 var content = $(".myClass p").html()
  • 如果写“p”是一个挑战,并且在 DIV 中只有一个这个段落,那么你可以尝试使用 var content = $(".myClass &gt;*").html(); 作为我的最佳猜测。老实说,除非我理解你写“p”的挑战,否则我(至少)很难找到一个可以接受的解决方案。请您详细说明一下!
  • 最后一个答案对我来说很好!只有 this--> var content = $(".myClass >*").html();更新我的代码并只更改这个 >* 我会用 V 来评价它。非常感谢
  • 完成@programmer123,修改了答案。 PS-我很高兴它有所帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-22
  • 2011-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-04
相关资源
最近更新 更多