jQuery tiene la comprobación de Att para ver si hay un atributo en un elemento

Posible duplicado:
Verifique la existencia de un atributo con JQuery

¿Cómo verifica si hay un atributo en un elemento en jQuery? Similar a hasClass , pero con attr ?

Por ejemplo,

 if ($(this).hasAttr("name")) { // ... } 

 var attr = $(this).attr('name'); // For some browsers, `attr` is undefined; for others, // `attr` is false. Check for both. if (typeof attr !== typeof undefined && attr !== false) { // ... } 

¿Qué tal solo $(this).is("[name]") ?

La syntax [attr] es el selector CSS para un elemento con un atributo attr , y .is() comprueba si el elemento al que se llama coincide con el selector CSS dado.

Si va a verificar la existencia de atributos con frecuencia, le sugiero que cree una función hasAttr , para usarla como formuló la hipótesis en su pregunta:

 $.fn.hasAttr = function(name) { return this.attr(name) !== undefined; }; $(document).ready(function() { if($('.edit').hasAttr('id')) { alert('true'); } else { alert('false'); } }); 
Test field

Estás tan cerca que es una locura.

 if($(this).attr("name")) 

No hay hasttr, pero presionar un atributo por su nombre simplemente devolverá indefinido si no existe.

Esta es la razón por la que funciona a continuación. Si elimina el atributo de nombre de # encabezado, se activará la segunda alerta.

Actualización: según los comentarios, lo siguiente SÓLO funcionará si el atributo está presente Y se establece en algo, no si el atributo está allí, pero está vacío

  

Welcome!

Tarde a la fiesta, pero … ¿por qué no solo this.hasAttribute("name") ?

Referir esto

La mejor forma de hacerlo sería con filter() :

 $("nav>ul>li>a").filter("[data-page-id]"); 

Todavía sería bueno tener .hasAttr (), pero como no existe, existe de esta manera.

 Object.prototype.hasAttr = function(attr) { if(this.attr) { var _attr = this.attr(attr); } else { var _attr = this.getAttribute(attr); } return (typeof _attr !== "undefined" && _attr !== false && _attr !== null); }; 

Vine a cruzar esto mientras escribía mi propia función para hacer lo mismo … Pensé en compartir en caso de que alguien más tropiece aquí. Agregué null porque getAttribute () devolverá null si el atributo no existe.

Este método le permitirá verificar los objetos jQuery y los objetos regulares de JavaScript.

También puede usarlo con atributos tales como disabled = “disabled” en los campos del formulario, etc. de esta manera:

 $("#change_password").click(function() { var target = $(this).attr("rel"); if($("#" + target).attr("disabled")) { $("#" + target).attr("disabled", false); } else { $("#" + target).attr("disabled", true); } }); 

El atributo “rel” almacena la identificación del campo de entrada de destino.

Escribí un plugin hasAttr () para jquery que hará todo esto de manera muy sencilla, exactamente como lo ha solicitado el OP. Más información aquí

EDITAR: Mi complemento se eliminó en el gran desastre de eliminación de la base de datos plugins.jquery.com de 2010. Puede buscar aquí información sobre cómo agregarla usted mismo y por qué no se ha agregado.