Eu tenho uma função que anexa a <div>
a um elemento no clique. A função obtém o texto do elemento clicado e o atribui a uma variável chamada name
. Essa variável é então usada como o <div>
id
elemento anexado.
Preciso ver se já existe um <div>
id
com name
antes de anexar o elemento, mas não sei como encontrar isso.
Aqui está o meu código:
$("li.friend").live('click', function() {
name = $(this).text();
// if-statement checking for existence of <div> should go here
// If <div> does not exist, then append element
$("div#chatbar").append("<div class='labels'><div id='" + name + "' style='display:none;'></div>" + name + "</div>");
// Else
alert('this record already exists');
});
Isso parece bastante simples, mas estou recebendo o erro " Fim inesperado de arquivo ao procurar pelo nome da classe" . Eu não tenho idéia do que isso significa.
if (document.getElementById(name)) {
$("div#" + name).css({bottom: '30px'});
} else {
$("div#page-content div#chatbar").append("<div class='labels'>" + name + "</div><div id='" + name + "'></div>");
}
O que é mais é que desejo excluir esse elemento se eu o fechar, o que deve remover o div id [name]
do documento, mas .remove()
não o faz.
Aqui está o código para isso:
$(".mini-close").live('click', function(){
$(this).parent().remove();
});
Eu adicionei .mini-close
à função de acréscimo como filho de, .labels
portanto, havia uma maneira de fechar o acréscimo, <div>
se necessário. Depois de clicar .mini-close
e tentar clicar no mesmo nome novamente, li.friends
ele ainda encontra div id [name]
e retorna a primeira parte da minha if
declaração.
fonte
$("div#" + name).css({bottom: '30px'});
está errado, deve ser$("div#" + name).css('bottom', '30px');
Respostas:
Você pode usar
.length
após o seletor para ver se ele corresponde a algum elemento, como este:A versão completa:
Ou, a versão não jQuery para esta parte (já que é um ID):
fonte
!$("#"+name).length)
:) #===
vez de serra==
.A resposta de Nick acertou em cheio. Você também pode usar o valor de retorno de getElementById diretamente como sua condição, em vez de compará-lo com nulo (de qualquer maneira funciona, mas eu pessoalmente acho esse estilo um pouco mais legível):
fonte
Tente verificar o comprimento do seletor, se ele retornar alguma coisa, o elemento deverá existir ou não.
Use a primeira condição if para id e a segunda condição para a classe.
fonte
fonte
Outra maneira abreviada:
fonte
Você pode verificar usando jquery da seguinte maneira:
fonte
A maneira mais simples é ..
Isso também faz parte das especificações do HTML5: https://www.w3.org/TR/html5/single-page.html#accessing-other-browsing-contexts#named-access-on-the-window-object
fonte
Aqui está a função jQuery que eu uso:
Isso retornará um valor booleano. Se o elemento existir, ele retornará verdadeiro. Se você deseja selecionar o elemento pelo nome da classe, substitua-o
#
por.
fonte
Você pode lidar com isso de maneiras diferentes,
O objetivo é verificar se a div existe e executar o código. Simples.
Doença:
Nota:
Isso retornará um número toda vez que for executado, por isso, se não houver div, fornecerá um Zero [0], e como nenhum 0 pode ser representado como falso no binário, você pode usá-lo na instrução if. E você pode usá-lo como uma comparação com um número nenhum. enquanto houver três afirmações abaixo
fonte
coloque o id que você deseja verificar no jquery is method.
fonte