/ / Quiero obtener un nodo primario específico de un elemento con jQuery pero no funciona por alguna razón: jquery, jquery-selectors

Quiero obtener un nodo primario específico de un elemento con jQuery, pero no funciona por alguna razón: jquery, jquery-selectors

Tengo un lapso dentro de una etiqueta de leyenda que quieroSe utiliza para eliminar la etiqueta fieldset cuando se hace clic. Estoy usando jQuery y este es el código que parece que no puedo trabajar: (sí, estoy usando la última versión de jQuery)

jQuery:

function removeStep(){
$(this).closest("fieldset").remove();
//Already tried: $(this).parents("fieldset").remove(); . . . didn"t work
}

HTML:

<div id="steps">
<fieldset class="step">
<legend>STEP 1: <span class="remove" onclick="removeStep();">remove</span></legend>
</fieldset>
</div>

Respuestas

2 para la respuesta № 1

El problema es que "esto" en tu función no será lo que quieres que sea.

Ya que estás usando jQuery de todos modos, deberías abandonar el hábito de vincular los controladores de eventos directamente a través del marcado HTML de esa manera. En su lugar, configura el controlador con jQuery:

$(function() {
$("span.remove").click(removeStep);
});

Si es absolutamente necesario hacerlo en el HTML, intente esto:

... <span class="remove" onclick="removeStep.call(this);">remove</span>

0 para la respuesta № 2

$(this.parentElement.parentElement).remove() Debería trabajar.

$(this).parent().parent().remove() es más la "manera jQuery" supongo; Creo que las antiguas IEs utilizaron parentNode en lugar de parentElement por alguna razón tonta.


0 para la respuesta № 3

Lo tengo funcionando pasando directamente en referencia al lapso:

jQuery:

function removeStep(step){
$(step).closest("fieldset").remove();
}

HTML:

<div id="steps">
<fieldset class="step">
<legend>STEP 1: <span class="remove" onclick="removeStep(this);">remove</span></legend>
</fieldset>
</div>