Pergunta

Eu tenho um formulário com vários vãos com id="myid".Eu gostaria de ser capaz de remover todos os elementos com essa identificação do DOM, e eu acho que jQuery é a melhor maneira de o fazer.Eu descobri como usar o $.remove() método para remover uma instância do id, por simplesmente não fazer:

$('#myid').remove()

mas é claro que apenas remove a primeira ocorrência de myid.Como faço para iterar sobre TODAS as instâncias de myid e removê-los todos?Eu pensei que o jquery $.cada() o método pode ser o caminho, mas eu não consigo descobrir a sintaxe para iterar sobre todas as instâncias de myid e removê-los todos.

Se há uma maneira simples de fazer isso com a regular JS (não usando jQuery) estou aberto a isso também.Talvez o problema é que deveriam ser exclusivos (por exemplo,você não deve ter vários elementos com id = "myid")?

Obrigado,

Chris

Foi útil?

Solução

.remove() deve remover todos eles. Eu acho que o problema é que você está usando um ID. Só deveria haver 1 Elemento HTML com um ID específico na página, então o JQuery está otimizando e não procurando por todos eles. Use um classe em vez de.

Outras dicas

Todos os seus elementos devem ter um id exclusivo, então não deve haver mais do que um elemento com #myid

Um "id" é um identificador exclusivo.Cada vez que este atributo é usado em um documento deve ter um valor diferente.Se você estiver usando esse atributo como um gancho para folhas de estilo, pode ser mais adequado utilizar as classes (que os elementos do grupo) que o id (que são usados para identificar exatamente um elemento).

No entanto, tente isso:

$("span[id=myid]").remove();

ID do elemento DOM Shout Seja único. Use a classe em vez disso (<span class='myclass'>). Para remover todo o período com esta classe:

$('.myclass').remove()

Se você deseja remover todos os elementos com peças de identificação correspondentes, por exemplo:

<span id='myID_123'>
<span id='myID_456'>
<span id='myID_789'>

Experimente isso:

$("span[id*=myID]").remove();

Não se esqueça do '*' - isso os removerá de uma só vez - aplausos

Demoção de trabalho

Você deveria estar usando um class Para vários elementos como um id deve ser apenas um único elemento. Para responder sua pergunta no .each() Sintaxe, porém, é assim que seria:

$('#myID').each(function() {
    $(this).remove();
});

Documentação oficial do jQuery aqui.

A maneira mais limpa de fazer isso é usando a API de seletores HTML5, especificamente querySelectorAll().

var contentToRemove = document.querySelectorAll("#myid");
$(contentToRemove).remove(); 

o querySelectorAll() A função retorna uma matriz de elementos DOM que correspondem a um ID específico. Depois de atribuir a matriz devolvida a um var, então você pode passar como um argumento para o jQuery remove().

Como já disse, apenas 1 O elemento pode ter um ID específico. Use classes em vez disso. Aqui está a versão sem jQuery para remover os nós:

var form = document.getElementById('your-form-id');
var spans = form.getElementsByTagName('span');

for(var i = spans.length; i--;) {
    var span = spans[i];
    if(span.className.match(/\btheclass\b/)) {
        span.parentNode.removeChild(span);
    }
}

getElementsByTagName é o método mais compatível com o navegador cruzado que pode ser usado aqui. getElementsByClassName Seria muito melhor, mas não é suportado pelo Internet Explorer <= IE 8.

Demoção de trabalho

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top