2011-12-28 21 views
5

Tengo un atributo name asignado a un hipervínculo.
Cuando hago lo siguiente con jQuery link_name no devuelve nada.
¿Estoy haciendo algo mal?

$("body").delegate("a", "click", function (event) { 

    var link_name = $(this).attr('name'); 
    alert(link_name); 
+1

En casos como este, es útil para comprobar lo que en realidad se está consiguiendo: poner 'console.log (este)' dentro del manejador (misma idea que 'alert', pero mucho más amigable). Asegúrese de estar utilizando un navegador que le permita acceder fácilmente a la consola de desarrollador. – Amadan

+3

Debe haber algo más que no haya revelado porque su código parece funcionar bien aquí: http://jsfiddle.net/jfriend00/fqM2V/. ¿Estás esperando a que el documento se cargue antes de que se ejecute este código? – jfriend00

+0

Algo tiene de extraño su código; por lo general, una etiqueta de anclaje tiene * cualquiera * un atributo 'href' (se puede hacer clic) * o * un atributo' name' (no se puede hacer clic), pero no ambos. Tal vez debería establecer 'var link_name = $ (this) .attr ('href')' en su lugar? – Blazemonger

Respuesta

18

que haría uso de esta (usando jQuery más reciente): OP

$("body").on("click", "a", function (event) { 
    var link_name = $(this).attr('name'); 
    alert(link_name); 
}); 
+1

-1 Downvote porque no explica nada sobre por qué el código OP no funciona. – jfriend00

+3

Con ese código (incluyendo paréntesis finales faltantes, etc.), no está claro en absoluto cuál es el error. Al incluir este código donde está, debería poder ver el error obvio. Esto le dará confianza en esta sección del código y, con suerte, le permitirá ver el error real. –

2

Cita:

¿Estoy haciendo algo mal?

Como han señalado otros, su código debería funcionar si agrega los corchetes de cierre faltantes. });

También no indicó qué versión de jQuery, sin embargo, utilizando la última versión de 1.7, se debe utilizar on() en lugar de delegate() y prop() en lugar de attr().

$("body").on("click", "a", function (event) { 
    var link_name = $(this).prop('name'); 
    alert(link_name); 
}); 
  1. Como de jQuery 1.7, .delegate() ha sido sustituida por el método() .En.
+1

que es un poco irrelevante, porque el código proporcionado realmente funciona. – gotofritz

+1

Votación a la respuesta por respuesta a la pregunta. El OP preguntó acerca de .delegate(). – jfriend00

+0

@fritzfromlondon, incluso si actualmente funciona _para usted_, no sabemos exactamente qué más está haciendo el OP aquí para romperlo.Dado que ambos métodos se han actualizado, el OP debe tener en cuenta. – Sparky