Estoy tratando de eliminar div sin identificación y clase <div> sin eliminar a sus hijos.
<div class="struc"> .. .. <div class="required-field half-control form-group has-feedback"> <label for="fxb_d56c971 class=" control-label">First Name</label> <input id="fxb_d56c971a class="design_textfield" type="text" value="" placeholder="First Name*"> <div> <span class="field-validation-error" data-valmsg-replace="true"> <span id="fxb_d56c971a" class="">First Name is required.</span> </span> </div> </div> .. .. </div>Probé el siguiente código que no funciona
var findExtraDiv = $(el).prev('label').parent(); if ($(findExtraDiv).prop("tagName").toLowerCase() == 'div') { if (($(findExtraDiv).id == null) && ($(findExtraDiv).attr("class") == "")) { var cnt = $(findExtraDiv).contents(); $(findExtraDiv).replaceWith(cnt); } }Puedo encontrar el div correcto pero no puedo eliminar solo el div principal
Esto es lo que quiero
<div class="struc"> ... <div class="required-field half-control form-group has-feedback"> <label for="fxb_d56c971 class=" control-label">First Name</label> <input id="fxb_d56c971a class=" design_textfield" type="text" value="" placeholder="First Name*"> <span class="field-validation-error" data-valmsg-replace="true"> <span id="fxb_d56c971a" class="">First Name is required.</span> </span> </div> ... </div>Cualquier sugerencia o ayuda sería apreciada.
Gracias por adelantado
Prueba esto, por favor:
$(".struc div").each(function(){ let temp = $(this).html(); if($(this).attr('id')===undefined){ console.log('id is undefined'); $(this).remove(); $('.struc').append(temp); } })Aquí va un ejemplo de trabajo en jsfiddle:
Su código es correcto excepto por dos errores:
$(findExtraDiv).id jQuery no tiene propiedad "id". Debería ser $(findExtraDiv).attr('id') == undefined$(findExtraDiv).attr("class") == "" el atributo faltante devuelve 'indefinido', no una cadena vacía. Deberías tener $(findExtraDiv).attr("class") == undefinedCon estas dos modificaciones y suponiendo que su "$(el)" sea correcto, su código funcionará.
El siguiente código puede encontrar todos los elementos div que no tienen atributos y luego desenvolverlo. Esto devolverá la salida solicitada.
const noAttributeElems = $("div").filter(function(){ if(this.attributes.length === 0){ $(this).contents().unwrap(); } });