【问题标题】:jQuery object removes HTML markupjQuery 对象删除 HTML 标记
【发布时间】:2014-12-03 00:18:21
【问题描述】:

所以,我将 HTML 代码转换为 jQuery 对象,我想在其中稍微编辑它。 在这种情况下,我只想从内容中删除图像。出于某种原因,它删除的不止于此。

检查下面的 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|1@2|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();
    });

感谢大家的努力。

【问题讨论】:

    标签: jquery


    【解决方案1】:

    回答“发生了什么事”的问题......

    当您像这样创建 jquery 对象时:var newHTML = $('&lt;tr&gt;one&lt;/tr&gt;&lt;tr&gt;two&lt;/tr&gt;'),它无法创建正确的 html 元素。

    您应该将数组传递给 jquery 对象,或者将您的 &lt;tr&gt;s 包装在一个表中以将其呈现为正确的表对象。

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

    【讨论】:

    • 这是解决我的问题的最接近的答案。给我一些想法,一起来吧。
    • 也最好把imgs和inputs标签关闭&lt;img src="..." /&gt;,否则有时会出问题
    • 呃,他们是!不知道为什么它们在我的控制台日志中显示为未关闭。
    【解决方案2】:

    以下是做什么的?

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

    (试一试)

    【讨论】:

    • 嗯,这也会从原始 HTML 片段中删除图像。我不想那样。我想从我的对象持有的 HTML 中删除图像;)
    【解决方案3】:

    要从您的网页中删除所有&lt;img&gt;,只需执行$("img").remove()

    工作代码sn-p:

    $("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|1@2|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>

    【讨论】:

    • 这根本不是我想要做的 ;) 我想删除仅在我的对象 newHTML 持有的标记内的图像 :)
    【解决方案4】:

    试试这个...

    var _temp = $("table").clone();
    
    $(_temp).find("tr img").remove()
    
    $("body").append(_temp)
    

    Check on fiddle

    【讨论】:

    • 不,它确实会从原始 HTML 片段中删除图像。我不想要那个。我想进入包含该部分的对象内部并删除它们并创建一个新的 HTML :)
    • 这将从临时变量中删除所有图像,
    • 不,我没有成功。弄清楚了。我会将解决方案发布到我的线程中。
    猜你喜欢
    • 1970-01-01
    • 2011-04-08
    • 1970-01-01
    • 2018-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-12
    相关资源
    最近更新 更多