El asunto es que $() no devuelve lo mismo que getElementById() porque tampoco hace lo mismo.
$() puede devolver, según los parámetros que le pases, varios objetos correspondientes a elementos del DOM. Por ejemplo podrías pedirle todos los input con $("INPUT") y entonces te devolvería todos los que hubiera. Así que, para contemplar esto de una forma más consistente. $ siempre te devuelve un array, incluso cuando te devuelve un sólo objeto. Más aún, te devuelve un array inclusocuando no se ha encontrado ningún objeto en absoluto.
¿Cómo podrías hacer lo mismo que quieres hacer tú, comprobar si hay o no hay ese input?
La primera opción sería:
Código javascript
:
Ver originalif ($('#tmp_id_ciudad').length > 0) {
valorCiudad = $('#tmp_id_ciudad').val();
valorEstado = $('#Estado').val();
//...
}
Es decir, compruebas si la longitud del array que te devuelve es mayor que cero, si hay alguno.
Pero hay una opción mejor. Más elegante, limpia y sencilla. No compruebes si está o no. Simplemente haz lo que quieras hacer. Quiero decir, si haces por ejemplo $('#tmp_id_ciudad').show() esto no te dará error, ni siquiera cuando no exista el elemento en cuestión.
SI lo que quieres es coger el valor de un campo, cógelo. Si no existe el campo te devolverá undefined, pero no dara error. Y para que no te dé undefined, simplemente pon un valor por defecto.
Código javascript
:
Ver originalvalorCiudad = $('#tmp_id_ciudad').val() || 0;
valorEstado = $('#Estado').val() || 0;
( Y, por cierto, que para coger el valor de un elemento de input, mejor utiliza val() )