Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JS/JQuery-如何迭代html(),替换字符串的每个实例_Javascript_Jquery_Html_Regex - Fatal编程技术网

Javascript JS/JQuery-如何迭代html(),替换字符串的每个实例

Javascript JS/JQuery-如何迭代html(),替换字符串的每个实例,javascript,jquery,html,regex,Javascript,Jquery,Html,Regex,我使用标签来标识消息。此标签类似于DHHS1709PJ。您可以在下面的HTML中看到,它有时是元素的id,有时是元素的值,有时是href或aria控件中的值。我一直在努力寻找将整个块解析为字符串的方法,以便使用正则表达式替换标记的每个实例,无论它是属性还是值 我有以下HTML: <li id='msg-DHHS1709PJ' class="draggable"> <div class="panel panel-primary"> <div c

我使用标签来标识消息。此标签类似于DHHS1709PJ。您可以在下面的HTML中看到,它有时是元素的id,有时是元素的值,有时是href或aria控件中的值。我一直在努力寻找将整个块解析为字符串的方法,以便使用正则表达式替换标记的每个实例,无论它是属性还是值

我有以下HTML:

  <li id='msg-DHHS1709PJ' class="draggable">
    <div class="panel panel-primary">
      <div class="panel-heading">
        <h3 class="panel-title"> Message
          <a id="DHHS1709PJ" class="pull-right cancel" href="#">
            <i class="fa fa-times-circle"></i>
          </a>
          <a class="pull-right" data-toggle="collapse" data-perform="panel-collapse" href="#body-DHHS1709PJ" aria-expanded="true" aria-controls="body-DHHS1709PJ">
            <i class="panel-toggle fa fa-minus"></i>
          </a>
        </h3>
        <span>Voiced by: Joe</span>
      </div>
      <div id="body-DHHS1709PJ" class="panel-wrapper collapse in">
      <div class="panel-body">
        Message Copy
      </div>
      </div>
    </div>
  </li>
用最终代码编辑

最后,我不得不将此函数移动到我的可排序表的接收部分:

  receive: function(e, ui){
    var workspace = $( '#workspace' ).html();
    var tag = $(ui.item).find('#msg-tag').text();
    var new_tag = tag;
    var var_created = false;
    var count = 1;
    while (var_created == false) {
      if ( $(workspace).find( "#"+new_tag ).length) {
        new_tag += "-x"+count;
        count += 1;
      }
      else {
        var re = new RegExp(tag, "g")
        $(this).html($(this).html().replace(re, new_tag));
        $( '#body-'+new_tag ).closest('li').attr('id', new_tag);
        var_created = true;
      }
    }
    $(this).find('.cancel').show(); 
    $(this).find('.panel').removeClass('panel-primary').addClass('panel-info');
    ui.item.find('.panel').removeClass('panel-primary').addClass('panel-success');
  }
});
在最高层次上,

$(document.body).html($(document.body).html().replace(regex, replacement));
也许你想做什么就做什么

但是,请注意,可能会丢失任何事件处理程序或附加到DOM元素的其他数据

可选地,如果要替换所有属性,可以考虑迭代每个DOM元素的属性:


在哪里解析?在服务器上?在文本编辑器中?这是发送到浏览器的页面的HTML吗?这是JavaScript程序中的一些文本吗?为了回答这个问题,需要做的假设太多了。但是,让我们假设它在web浏览器中变成了DOM(只是为了给出一些定义),假设每个标记的位置不能改变,我至少会给每个元素一个单独的
数据-
属性,告诉您标记存在的位置。所以像
数据标签loc=“id”
数据标签loc=“href”
。然后,您可以选择具有
data tag loc
属性的所有元素,并轻松判断标记的位置。
var tag\u elems=document.queryselectoral(“[data tag loc]”)
然后循环集合并执行
var tag_val=elem.getAttribute(elem.getAttribute(“数据标记loc”))你的第一行代码在路上帮助了我。用我的最终代码更新了问题。
$(document.body).html($(document.body).html().replace(regex, replacement));
$('*').each(function(i, e) {
  $.each(e.attributes, function(i, attrib){
    $(e).attr(attrib.name, attrib.value.replace(regex, replacement));
  });
});