javascript - Jquery 在 HTML 中的两个特定单词之间切换内容

标签 javascript jquery html regex

我有以下 Javascript 代码来在 -a- 和 -ea- 之间切换内容。 当它运行时,我的 HTML 中有一个“查看答案”链接。 现在,我想要的行为如下:在 -example- 和 -endexample- 之间,我应该有一个“查看示例”链接,在 -sample- 和 -endsample- 之间,我应该有一个“查看示例”链接等等。

fiddle https://jsfiddle.net/eoc74009/6/

    $(document).ready(funciton(){
    initToggleContent();
});

initToggleContent = function(){
    var p_content = $(".content").html();
    p_content = p_content.replace(new RegExp("-a-","g"),"<div class='hidden toggle-content'>")
  p_content = p_content.replace(new RegExp("-ea-","g"),"</div><hr>")
  $(".content").html(p_content);
  $("<a class='toggle-button'>View Answer</a>").insertBefore(".toggle-content");
  $(document).on('click',".toggle-button",function(){
    $(this).next(".toggle-content").toggleClass("hidden");
    if($(this).html()==="View Answer"){
        $(this).html("Hide Answer");
    }
    else{
    $(this).html("View Answer");
    }
  });

}

最佳答案

您可以使用此代码:

p_content = p_content.replace(/-([^\-]+)-([\s\S]*)-end\1-/gm, function(_, name, content) {
   return '<a class="toggle-button" data-name="' + name +
    '">View ' + name + '</a>' +
    '<span class="hidden toggle-content">' +
    content + '</span><hr>';
});

span 而不是 div,因为 div 不能位于 p 标签内。

正则表达式解释:

-([^\-]+)- 将匹配破折号、任意数量的非破折号和破折号

([\s\S]*) 将匹配包括换行符在内的任何内容

-end\1- 将匹配破折号结尾和先前匹配的名称

括号用作捕获组,因此您可以在替换中引用它们。

并修改点击处理程序:

$(document).on('click',".toggle-button",function(){
    $(this).next(".toggle-content").toggleClass("hidden");
    var name = $(this).data('name');
    if($(this).html()==="View " + name){
        $(this).html("Hide " + name);
    }
    else{
        $(this).html("View " + name);
    }
});

<强> JSFIDDLE

关于javascript - Jquery 在 HTML 中的两个特定单词之间切换内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34548625/

相关文章:

jquery - 如何使用切片将同一类的每 6 个 div 包装在另一个 div 中?

javascript - 如何找到导致 DOM 元素悬停时外观发生变化的原因?

javascript - 是否可以在 Handlebars.js 中提供条件上下文?

javascript - 无法让我的页面正常工作

javascript - 从 jQuery 事件访问函数中的参数 * 和 * 事件

javascript - 在 JavaScript 中迭代对象数组

html - Bootstrap 下拉菜单插入符号在 Firefox 中不显示

html - 如何在文本框和我在 boostrap here 中创建的 html 表单之间添加空格?

javascript - 如果应用于可调整大小的子元素,则 jQuery 可调整大小问题

javascript - 如何使用 font Awesome 增加加载图标的字体大小