如果img src = null,则隐藏父元素

时间:2017-02-28 15:07:13

标签: javascript jquery

如果td中的图像src为null,我想隐藏包含图像的td。

我尝试了以下内容,但它隐藏的不仅仅是我试图定位的td:

$('td').each(function() {
    if($(this).find('img').attr('src') == "null"){
        $(this).css('display', 'none');
    }
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
  <tbody>
    <tr>
      <td>
        <p class="centered">
          <label class="wrapable">
          <img src="null">
          <input name="test" value="1" type="radio">
          </label>
        </p>
      </td>
      <td>
        <p class="centered">
          <label class="wrapable">
          <img src="null">
          <input name="test" value="1" type="radio">
          </label>
        </p>
      </td>
      <td>
        <p class="centered">
          <label class="wrapable">
          <img src="null">
          <input name="test" value="1" type="radio">
          </label>
        </p>
      </td>
      <td>
        <p class="centered">
          <label class="wrapable">
          <img src="http://lorempixel.com/100/100">
          <input name="test" value="1" type="radio">
          </label>
        </p>
      </td>
    </tr>
  <tbody>
</table>

任何帮助都会非常感激,还在学习:)。

3 个答案:

答案 0 :(得分:3)

使用jQuery的最简单的解决方案:

$('td:has(img[src="null"])').hide();

或稍快一点:

$('td').has('img[src="null"]').hide();

答案 1 :(得分:1)

你也可以试试这个

<img onerror="this.parent.style.display='none'" src=".." />

答案 2 :(得分:1)

应该是这样的短线:$('img[src="null"]').parents('td:first').hide();

如果需要定位所有父td祖先$('img[src="null"]').parents('td').hide();删除伪:第一选择器,