使用javascript / jquery删除特定的html代码

时间:2014-08-17 07:58:37

标签: javascript jquery html algorithm

<div id="mn">

    <p article="game" a_type="advertisement" cid="#P6_001"></p> 
    <p article="let" cid="#P6_005"></p> 
    <dc_title article="start" check_zone="true" a_type="masthead" cid="#P6_006"></dc_title> 
    <p article="end" cid="#P6_047"></p> 
    <p article="start" a_type="advertisement" cid="#P6_001"></p> 
    <p article="end" cid="#P6_005"></p> 
    <dc_title article="sd" check_zone="true" a_type="masthead" cid="#P6_006"></dc_title> 
    <p article="end" cid="#P6_047"></p> 
</div>
我有这样的代码。我想删除有文章=&#34;开始&#34;属性和下一个标签有article =&#34; end&#34;

<dc_title article="start" check_zone="true" a_type="masthead" cid="#P6_006"></dc_title> 
<p article="end" cid="#P6_047"></p> 

所以在修复上面的代码之后,我想像这样显示它:

<p article="game" a_type="advertisement" cid="#P6_001"></p> 
<p article="let" cid="#P6_005"></p> 
<dc_title article="sd" check_zone="true" a_type="masthead" cid="#P6_006"></dc_title> 
<p article="end" cid="#P6_047"></p>

3 个答案:

答案 0 :(得分:0)

如果您愿意使用jQuery(或者如果您的项目可以使用),您可以执行以下操作:

elements = $('[article="start"] + [article="end"]');
elements.prev().detach();
elements.detach();

第一行选择article=end前面带有article=start元素的所有元素。第二行删除article=start元素,第三行删除article=end元素。

答案 1 :(得分:0)

您可以使用jquery jsfiddle work out来实现此目的。

     var selector1=$( 'p[article="start"]');
     var selector2=$( 'dc_title[article="start"]');
     selector2.next('p[article="end"]').remove();
     selector1.next('p[article="end"]').remove();
     selector1.remove();
     selector2.remove();

答案 2 :(得分:0)

使用var dv = getElementsByAttribute('article','start');

获取对节点的引用
for(var i=0;i<dv.length;i++){
 if(dv[i].nextSibling.getAttribute('article')=="end")
    var ref = dv[i];
    ref.parentNode.removeChild(ref.nextSibling);
    dv[i].parentNode.removeChild(dv[i]); 

 }



var getElementsByAttribute = function (attr, value) {
  var match = [];

  /* Get the droids we're looking for*/
  var elements = document.getElementsByTagName("*");

  /* Loop through all elements */
  for (var ii = 0, ln = elements.length; ii < ln; ii++) {

    if (elements[ii].hasAttribute(attr)) {

      /* If a value was passed, make sure it matches the element's */
      if (value) {

        if (elements[ii].getAttribute(attr) === value) {
          match.push(elements[ii]);
        }
      } else {
        /* Else, simply push it */
        match.push(elements[ii]);
      }
    }
  }
  return match;
};