我使用prm.js来显示一段代码.我希望能够显示此代码的视觉渲染.所以我创建了一个按钮,从代码转到渲染,就在div下面,空的插入代码,这样它就可以直接解释并显示可视化的渲染.然后是我的代码块.大概是这样的:

<button class="flip">See the code</button>
<div class="result"></div>
<div class="code">
<pre class="language-markup"><code class="language-markup"><script class="script" type="text/plain">
....here is my html code...
</script></code></pre>
</div>

因为我有很多这样的代码块,所以我想使用Each和Click函数,如下所示:

$('.flip').each(function(){
  $(this).on('click',function(){
    var code = $(this).next('.code').html();//get the html code from the html block
  var result = $(this).next('.result').text(code);// inject it in the result block
  $(this).next('.code,.result').toggleClass('hide');// toggle to show code or result..
  
})
}) 

但它什么也做不了.即使我使用html()、val()或text()针对前标记、代码或脚本标记,它也不起作用.

如有任何帮助,我们将不胜感激.

EDIT:多亏了斯瓦蒂的回答,它起作用了.如果我想做相反的事情,因为相同的代码,它也可以工作.这是我的测试:

$(".code").hide();
$('.flip').each(function(){
    var code_block = $(this).nextAll('.code:first');
    var preview_div = $(this).next('.result');
    preview_div.html(code_block.find("code.language-markup").text());    //add your html in result div...
}) 

    $(".flip").click(function() {
        var code_block = $(this).nextAll('.code:first');
        var preview_div = $(this).next('.result');

   //run or show codes..block
    if ($(this).text().trim() == "See the code") {
        $(this).text('Run Code')
        // preview_div.html(code_block.find("code.language-markup").text());    //add your html in result div...
        preview_div.show();
        code_block.hide();
    } else {
        $(this).text('See the code')
        

        code_block.show();
        preview_div.hide();
    }


})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="
https://cdn.jsdelivr.net/npm/prismjs@1.29.0/prism.min.js
"></script>
<link href="
https://cdn.jsdelivr.net/npm/prismjs@1.29.0/themes/prism.min.css
" rel="stylesheet">

</head>
<body>
<button class="flip">Run Code</button>
<div class="result"></div>
<div class="code">
  <pre class="language-markup">
  <code class="language-markup">
  <script class="script" type="text/plain">
  <img src="https://i.pinimg.com/originals/1f/65/30/1f65303066ef5e14cad11da3c6eeef0d.jpg" width="50px" height="50px">
  <ul>
  <li><a href="#home">Home</a></li>
  <li><a href="#news">News</a></li>
  <li><a href="#contact">Contact</a></li>
  <li><a href="#about">About</a></li>
 </ul>
</script>
</code>
</pre>
</div>
<button class="flip">Run Code</button>
<div class="result">
</div>
<div class="code">
  <pre class="language-markup">
  <code class="language-markup">
   <script class="script" type="text/plain">
   <p>XYZ..something <input type="text"/></p>
   </script>
</code>
</pre>
</div>

推荐答案

您可以使用nextAll('.code:first')next('.result')并根据条件显示或隐藏您的代码或结果div来获得代码块和结果div.

100:

$(".result").hide()

$(".flip").click(function() {

  var code_block = $(this).nextAll('.code:first');
  var preview_div = $(this).next('.result');

   //run or show codes..block
  if ($(this).text().trim() == "Run Code") {
    $(this).text('See the code')
    preview_div.html(code_block.find("code.language-markup").text());    //add your html in result div...
    code_block.hide()
    preview_div.show()
  } else {
    $(this).text('Run Code')
    preview_div.hide()
    code_block.show()
  }

})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="
https://cdn.jsdelivr.net/npm/prismjs@1.29.0/prism.min.js
"></script>
<link href="
https://cdn.jsdelivr.net/npm/prismjs@1.29.0/themes/prism.min.css
" rel="stylesheet">

<button class="flip">Run Code</button>
<div class="result"></div>
<div class="code">
  <pre class="language-markup">
  <code class="language-markup">
  <script class="script" type="text/plain">
  <img src="https://i.pinimg.com/originals/1f/65/30/1f65303066ef5e14cad11da3c6eeef0d.jpg" width="50px" height="50px">
  <ul>
  <li><a href="#home">Home</a></li>
  <li><a href="#news">News</a></li>
  <li><a href="#contact">Contact</a></li>
  <li><a href="#about">About</a></li>
 </ul>
</script>
</code>
</pre>
</div>
<button class="flip">Run Code</button>
<div class="result">
</div>
<div class="code">
  <pre class="language-markup">
  <code class="language-markup">
   <script class="script" type="text/plain">
   <p>XYZ..something <input type="text"/></p>
   </script>
</code>
</pre>
</div>

另一种方式:你也可以在你的结果div中有相同的html,只要你点击按钮就可以切换div.

$(".result").hide()

$(".flip").click(function() {

  var code_block = $(this).nextAll('.code:first');
  var preview_div = $(this).next('.result');

  if ($(this).text().trim() == "Run Code") {
    $(this).text('See the code')
    code_block.hide()
    preview_div.show()
  } else {
    $(this).text('Run Code')
    preview_div.hide()
    code_block.show()
  }

})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="
https://cdn.jsdelivr.net/npm/prismjs@1.29.0/prism.min.js
"></script>
<link href="
https://cdn.jsdelivr.net/npm/prismjs@1.29.0/themes/prism.min.css
" rel="stylesheet">

<button class="flip">Run Code</button>
<div class="result"> <img src="https://i.pinimg.com/originals/1f/65/30/1f65303066ef5e14cad11da3c6eeef0d.jpg" width="50px" height="50px"></div>
<div class="code">
  <pre class="language-markup">
  <code class="language-markup">
  <script class="script" type="text/plain">
  <img src="https://i.pinimg.com/originals/1f/65/30/1f65303066ef5e14cad11da3c6eeef0d.jpg" width="50px" height="50px">
</script>
</code>
</pre>
</div>

Jquery相关问答推荐

无法通过单击从元素获取数据

ASP.NET Core 6 jQuery 验证不起作用

如何使 Bootstrap 轮播滑块使用移动左/右滑动

无限滚动jQuery插件

如何滚动到jQuery中的元素?

在 for 循环中分配点击处理程序

如何使用 jQuery 重置 Select 元素

如何使用 jQuery 的 getJSON() 方法传递请求标头?

使用 jQuery Validate 确认密码

jQuery UI 自动完成宽度未正确设置

如何立即启动 setInterval 循环?

如何更改 dropzone.js 中的默认文本?

jQuery:value.attr 不是函数

Jquery Ajax 错误处理忽略中止

jQuery Select 器中前导冒号的目的是什么?

如何使用jquery获取点击链接的href?

使用 jquery 禁用文本框?

如何使用 JQuery 删除onclick?

IE 中带有 jQ​​uery ajax 调用的无传输错误

Drop 事件未在 chrome 中触发