2014-12-02 66 views
1

所以,我将一个HTML代码转换为一个jQuery对象,我想稍微编辑它。 在这种情况下,我只是想从内容中删除图像。出于某种原因,它除去了更多。jQuery对象删除HTML标记

检查下面的HTML标记,你也会看到tr也随着第二个tr的内容被删除。

jQuery的

var getHTML = ''; 

$('.option-'+ optionNumber).each(function(){ //optionNumber in this very example is 0 and thus will select the below trs with class option-0 
    getHTML += $(this)[0].outerHTML; 
    }); 

var newHTML = $(getHTML); 
newHTML.find('img').remove(); 

原始的HTML标记:

<tr class="option-0"> 
    <td> 
     1 
    </td> 
    <td> 
     Simple 
    </td> 
    <td> 
     <img alt="" src="gfx/man_icon.gif"> 
    </td> 
    <td id="thisOptionPrice0" rowspan="2"> 
     $450.00 
    </td> 
    <td id="thisSelectionOption0" rowspan="2" style="width: 100px; text-align: center; vertical-align: middle;"> 
     <div data-role="fieldcontain"> 
      <fieldset data-role="controlgroup"> 
       <div class="ui-radio"> 
        <label class="chooseLabel ui-btn ui-corner-all ui-btn-inherit ui-btn-icon-left ui-radio-off" for="packageOption-0">Elegir</label> 
        <input data-cacheval="false" name="selectReservation" data-optionnumber="0" class="selectReservationOption" onclick="selectPackageOption(0); return false;" id="packageOption-0" value="1|[email protected]|1" type="radio"> 
       </div> 
      </fieldset> 
     </div> 
    </td> 
</tr> 
<tr class="option-0"> 
    <td> 
     1 
    </td> 
    <td> 
     Doble 
    </td> 
    <td> 
     <img alt="" src="gfx/man_icon.gif"> 
    </td> 
</tr> 

结果:

<td> 
    1 
</td> 
<td> 
Doble 
</td> 
<td></td> 
<td id="thisOptionPrice0" rowspan="1"> 
    $300.00 
</td> 
<td id="thisSelectionOption0" rowspan="1"> 
    <div data-role="fieldcontain"> 
     <fieldset data-role="controlgroup"> 
      <div class="ui-radio"> 
       <label class="chooseLabel ui-btn ui-corner-all ui-btn-inherit ui-btn-icon-left ui-radio-off" for="packageOption-0">Elegir</label> 
       <input data-cacheval="false" name="selectReservation" data-optionnumber="0" class="selectReservationOption" onclick="selectPackageOption(0); return false;" id="packageOption-0" value="2|1" type="radio"> 
      </div> 
     </fieldset> 
    </div> 
</td> 

缺少什么我在这里? 在此先感谢

编辑

做它像这样看来,以获得第一TR正确的..但忘掉第二个: VAR getHTML =“”;

$('.option-'+ optionNumber).each(function(){ //optionNumber in this very example is 0 and thus will select the below trs with class option-0 
    getHTML += '<table>'+ $(this)[0].outerHTML +'</table>; 
    }); 

这是怎么回事?

解决 - 这奏效了

var getHTML = ''; 
var finalHTML = ''; 
$('.option-'+ optionNumber).each(function(){ 
    getHTML = '<tbody>'+ $(this)[0].outerHTML +'</tbody>'; 
    var newHTML = $(getHTML); 

    newHTML.find('img').remove(); 
    finalHTML += newHTML.html(); 
    }); 

谢谢大家的努力。

回答

0

下面做了什么?

$(".option0 img").remove() 

(尝试)

+0

那么,这也将从原始的HTML片段中删除图像。我不想那样。我想从我的对象所持有的HTML中删除图像;) – entiendoNull 2014-12-02 15:16:58

0

尝试......

var _temp = $("table").clone(); 

$(_temp).find("tr img").remove() 

$("body").append(_temp) 

Check on fiddle

+0

不,它确实从原始HTML片段中删除图像。我不想那样。我想进入我的包含那件作品的对象,并删除它们,并创建一个新的HTML :) :) – entiendoNull 2014-12-02 15:23:38

+0

这将删除所有图像从临时变量, – 2014-12-02 15:26:17

+0

所以,亚伦的建议不起作用? – Veverke 2014-12-02 15:41:53

0

要在自己的网页中删除所有<img>的,干脆做$("img").remove()

工作代码片段:

$("img").remove();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<tr class="option-0"> 
 
    <td> 
 
    1 
 
    </td> 
 
    <td> 
 
    Simple 
 
    </td> 
 
    <td> 
 
    <img alt="" src="gfx/man_icon.gif" > 
 
    </td> 
 
    <td id="thisOptionPrice0" rowspan="2"> 
 
    $450.00 
 
    </td> 
 
    <td id="thisSelectionOption0" rowspan="2" style="width: 100px; text-align: center; vertical-align: middle;"> 
 
    <div data-role="fieldcontain"> 
 
     <fieldset data-role="controlgroup"> 
 
     <div class="ui-radio"> 
 
      <label class="chooseLabel ui-btn ui-corner-all ui-btn-inherit ui-btn-icon-left ui-radio-off" for="packageOption-0">Elegir</label> 
 
      <input data-cacheval="false" name="selectReservation" data-optionnumber="0" class="selectReservationOption" onclick="selectPackageOption(0); return false;" id="packageOption-0" value="1|[email protected]|1" type="radio"> 
 
     </div> 
 
     </fieldset> 
 
    </div> 
 
    </td> 
 
</tr> 
 
<tr class="option-0"> 
 
    <td> 
 
    1 
 
    </td> 
 
    <td> 
 
    Doble 
 
    </td> 
 
    <td> 
 
    <img alt="" src="gfx/man_icon.gif"> 
 
    </td> 
 
</tr>

+0

这完全不是我想要做的;)我想删除仅在我的对象newHTML存储的标记内部的图像:) – entiendoNull 2014-12-02 15:33:45

1

要anwser的questuion '这是怎么回事' ......

当您创建这样的jQuery对象:var newHTML = $('<tr>one</tr><tr>two</tr>'),它不能创建正确的html元素。

您应该将数组传递给jquery对象,或者将您的<tr>s包装在表中以将其呈现为正确的表对象。

var newHTML = $("<table>"+getHTML+"</table>"); 
newHTML.find('img').remove(); 
+0

这是解决我的问题的最接近的答案。给了我一些想法,所以一个。 – entiendoNull 2014-12-02 16:01:38

+2

也更好地使'img's和'inputs'标签关闭'​​',否则这可能会造成麻烦有时 – paulitto 2014-12-02 16:05:07

+0

Uhuh,他们是!不知道为什么他们显示为未在我的控制台日志中关闭。 – entiendoNull 2014-12-02 16:06:15