Tengo una lista de imágenes como esta:

<div>
    <div class="imgCnr">
    <img src="abc.jpg">
    </div>
    <div class="imgCnr">
    <img src="def.jpg">
    </div>
    <div class="imgCnr">
    <img src="ghi.jpg">
    </div>
    <div class="imgCnr">
    <img src="jkl.jpg">
    </div>
</div>

Cómo seleccionar y eliminar el elemento primario mediante el cual se incluye un img secundario con un atributo src específico

Mi conjetura:

var imgElmnt = document.querySelectorAll("imgCnr > img[src='def.jpg']");
imgElmnt.parent().remove();

Resultado deseado:

<div>
    <div class="imgCnr">
    <img src="abc.jpg">
    </div>
    <div class="imgCnr">
    <img src="ghi.jpg">
    </div>
    <div class="imgCnr">
    <img src="jkl.jpg">
    </div>
</div>
2
Rafeeq Mohamed 3 mar. 2018 a las 17:48

3 respuestas

La mejor respuesta
$("img[src='def.jpg']").parent().remove()

Estaba aplicando métodos jQuery en elementos DOM HTML, en su lugar, solo son aplicables en objetos jQuery.

Y en caso de que quiera lograr esto usando javascript simple, entonces haga

var imgElmnt = document.querySelectorAll("img[src='def.jpg']");
imgElmnt[0].parentNode.remove();
<div>
  <div class="imgCnr">
    <img src="abc.jpg">
  </div>
  <div class="imgCnr">
    <img src="def.jpg">
  </div>
  <div class="imgCnr">
    <img src="ghi.jpg">
  </div>
  <div class="imgCnr">
    <img src="jkl.jpg">
  </div>
</div>
4
void 3 mar. 2018 a las 14:50

Estuviste cerca:

var imgElmnt = document.querySelector("img[src='def.jpg']");
imgElmnt.parentNode.remove();
1
vityavv 3 mar. 2018 a las 14:55

Puede seleccionar la imagen por fuente en [src='source']

$(function() {
	let toRemove = "def.jpg";
	$("div img[src='" + toRemove + "']").parent().remove();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div>
  <div class="imgCnr">
    <img src="abc.jpg">
  </div>
  <div class="imgCnr">
    <img src="def.jpg">
  </div>
  <div class="imgCnr">
    <img src="ghi.jpg">
  </div>
  <div class="imgCnr">
    <img src="jkl.jpg">
  </div>
</div>
1
Eddie 3 mar. 2018 a las 14:52