Respostas:
Verifique as Perguntas frequentes sobre o jQuery ...
Você pode usar a propriedade length da coleção jQuery retornada pelo seu seletor:
if ( $('#myDiv').length ){}
lenght
vez de length
; é um erro de ortografia.
.length
.
(Como não tenho reputação suficiente para votar na resposta ...)
Wolf escreveu:
A propriedade length da chamada em um objeto indefinido ou nulo fará com que os navegadores IE e webkit falhem!
Em vez disso, tente o seguinte:
// NOTE!! THE FOLLOWING IS WRONG; DO NOT USE! -- EleotleCram if($("#something") !== null){ // do something }
ou
// NOTE!! THE FOLLOWING IS WRONG; DO NOT USE! -- EleotleCram if($("#something") === null){ // don't do something }
Embora seja verdade que chamar a propriedade length em um objeto indefinido ou nulo cause falhas nos navegadores, o resultado dos seletores do jQuery (o $ ('...')) nunca será nulo ou indefinido. Portanto, as sugestões de código não fazem sentido. Use uma das outras respostas, elas fazem mais sentido.
(Atualização 2012) Como as pessoas veem o código e esta resposta está no topo da lista: Nos últimos dois anos, eu tenho usado este pequeno plugin:
jQuery.fn['any'] = function() {
return (this.length > 0);
};
Eu acho que $ ('div'). Any () lê melhor que $ ('div'). Length , mais você não sofrerá tanto com erros de digitação: $ ('div'). Ayn () dará um erro de tempo de execução , $ ('div'). o comprimento silenciosamente provavelmente sempre será falso.
__
Edições novembro 2012:
1) Como as pessoas tendem a olhar para o código e não ler o que é dito ao redor do código, adicionei duas grandes notas de advertência ao código citado de Wolf.
2) Adicionei o código do pequeno plug-in que uso para esta situação.
A função de pesquisa retorna uma matriz de elementos correspondentes. Você pode verificar se o comprimento é zero. Observe a alteração para procurar apenas os elementos uma vez e reutilizar os resultados conforme necessário.
var elem = $("#btext" + i);
if (elem.length != 0) {
elem.text("Branch " + i);
}
Além disso, você já tentou usar a função de texto - se nenhum elemento existir, ele não fará nada.
$("#btext" + i).text("Branch " + i);
A função jquery $ () sempre retorna um valor não nulo - os elementos médios correspondem à sua cretária do seletor. Se o elemento não foi encontrado, ele retornará uma matriz vazia. Portanto, seu código será mais ou menos assim -
if ($("#btext" + i).length){
//alert($("#btext" + i).text());
$("#btext" + i).text("Branch " + i);
}
No jQuery 1.4, você obtém a função $ .isEmptyObject, mas se for forçado a usar uma versão mais antiga do jQ, como nós, os pobres desenvolvedores do Drupal apenas roubam, use este código:
// This is a function similar to the jQuery 1.4 $.isEmptyObject.
function isObjectEmpty(obj) {
for ( var name in obj ) {
return false;
}
return true;
}
Use-o como:
console.log(isObjectEmpty(the_object)); // Returns true or false.
não importa qual seja a sua seleção, a função $()
sempre retorna um objeto jQuery para que não possa ser usado para testar. A melhor maneira ainda (se não a única) é usar a size()
função ou a propriedade nativa de comprimento, conforme explicado acima.
if ( $('selector').size() ) {...}
if ( $('#whatever')[0] ) {...}
O objeto jQuery retornado por todos os métodos nativos do jQuery NÃO é uma matriz, é um objeto com muitas propriedades; um deles sendo uma propriedade "length". Você também pode verificar o tamanho () ou get (0) ou get () - 'get (0)' funciona da mesma maneira que acessa o primeiro elemento, ou seja, $ (elem) [0]
Que tal usar "indefinido"?
if (value != undefined){ // do stuff }
use $("#selector").get(0)
para verificar com nulo assim. get retorna o elemento dom, até então você está lidando com uma matriz, na qual precisa verificar a propriedade length. Pessoalmente, eu não gosto de verificação de comprimento para manipulação nula, isso me confunde por algum motivo :)
Usando a propriedade length, você pode fazer isso.
jQuery.fn.exists = function(){return ($(this).length < 0);}
if ($(selector).exists()) {
//do somthing
}