preg替换整个div或div内容javascript?

时间:2014-04-12 15:27:42

标签: javascript jquery html

我在我想要操作的javascript字符串中有html代码(我从ajax调用中得到)。 如果div已经存在于字符串中,我想删除它或想要更改其内容。

例如,我将此代码放在一个字符串中:

<div id ="message_abc_support" class = "messageclass">
<div class="messageBlockImage2">
</div>
<div id="messageBlockText">
<div id="messagesname">abc</div>
<div id="messagesmsg">123</div></div></div>

<div id ="message_abcd_support" class = "messageclass">
<div class="messageBlockImage2">
</div>
<div id="messageBlockText">
<div id="messagesname">abcd</div>
<div id="messagesmsg">123</div></div></div>

现在假设我来自aj​​ax电话:

<div id ="message_abcd_support" class = "messageclass">
<div class="messageBlockImage2">
</div>
<div id="messageBlockText">
<div id="messagesname">abcdef</div>
<div id="messagesmsg">123456</div></div></div>

如何用相同的id替换另一个div?请注意我有一个字符串,所以我不能删除div

3 个答案:

答案 0 :(得分:1)

我觉得我的老师告诉我们&#34;好吧,我已经教他们代数30年了,我认为这是关于他们开始接受它的时间&#34;

要明白:正则表达式的强度不足以解析任意HTML。有很多边缘情况和规则会导致错误。

然而,有其他方法可以轻松解决您的问题:

正确的方法是不要有重复的ID开头。说真的,几乎没有充分的理由要有重复的ID。根据定义,它们是独特的。首先,不要在div中添加ID。如果您需要查询它们,请考虑一下您正在做什么:您要查询您的视觉演示文稿以获取商业信息。相反,使用数组和对象来表示您的实际数据并将它们绑定到表示(例如,使用闭包或显式映射)。

但是......你已经有了这个代码..了解正确的UI结构可能需要花费很多时间..也许你甚至不是在后端创建这个代码的人。

因此,您可以使用每个浏览器具有的内置DOM解析功能:

   var el = document.createElement("div"); // placeholder
   el.innerHTML = response; // feed your AJAX response there
   var elms = el.querySelectorAll("[id]"); // select every element with an ID attribute
   for(var i = 0; i < elms.length; i++){
       // check if element with the same ID exists in the document
       if(document.querySelector(elms[i].id)){
           // wipe the ID out, in your code you can do whatever with it
           elms[i].id = "";
       }
   }

答案 1 :(得分:0)

将页面元素包含在<div id="target"></div>中。每次从ajax调用中得到肯定响应时,只需在你的ajax调用的成功块中替换id为target的div的现有内容,如下所示

 success:function(data) {
      $('#div').html(data); // as simple as that 
 } 

快乐编码:)

答案 2 :(得分:0)

您可以将jquery选择器应用于字符串并替换现有内容:

var s = '<div id="message_abcd_support" class = "messageclass"><div class="messageBlockImage2"></div><div id="messageBlockText"><div id="messagesname">abcdef</div><div id="messagesmsg">123456</div></div></div>';

f = $(s).filter("#message_abcd_support");
$("#message_abcd_support").replaceWith(f);