2011-12-28 23 views
5

Mam atrybut name przypisany do hiperłącza.
Kiedy wykonuję następujące czynności za pomocą jQuery link_name nic nie zwraca.
Czy robię coś nie tak?

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

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

W takich przypadkach warto sprawdzić, co się rzeczywiście coraz: umieścić 'console.log (this)' wewnątrz uchwytu (sam pomysł jako 'alert', ale o wiele bardziej przyjazne). Upewnij się, że używasz przeglądarki, która zapewnia łatwy dostęp do konsoli programisty. – Amadan

+3

Musi być coś jeszcze, czego nie ujawniłeś, ponieważ twój kod wydaje się działać dobrze tutaj: http://jsfiddle.net/jfriend00/fqM2V/. Czy czekasz na załadowanie dokumentu przed uruchomieniem tego kodu? – jfriend00

+0

Coś jest dziwnego w twoim kodzie - zazwyczaj znacznik zakotwiczenia ma * albo * atrybut 'href' (jest klikalny) * albo * atrybut' name' (nie jest klikalny), ale nie oba. Być może powinieneś ustawić 'var link_name = $ (this) .attr ('href')' zamiast? – Blazemonger

Odpowiedz

18

Chciałbym użyć tego (przy użyciu najnowszych jQuery):

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

-1 Dochód, ponieważ nie wyjaśnia, dlaczego kod OP nie działa. – jfriend00

+3

Przy tak dużej ilości kodu (łącznie z brakującymi nawiasami końcowymi itp.), Jego "nie jest wcale jasne, jaki jest błąd. Upuszczając ten kod tam, gdzie jest on, powinien być w stanie zobaczyć oczywisty błąd. To da mu pewność w tej sekcji kodu, i mam nadzieję, że pozwoli mu zobaczyć prawdziwy błąd. –

2

Quote OP:

robię coś źle?

Jak zauważyli inni, Twój kod powinien działać, jeśli dodasz brakujące nawiasy zamykające. });

też nie stwierdzić, która wersja jQuery jednak, korzystając z najnowszej wersji 1.7, należy użyć on() zamiast delegate() i prop() zamiast attr().

$("body").on("click", "a", function (event) { 
    var link_name = $(this).prop('name'); 
    alert(link_name); 
}); 
  1. W jQuery 1.7 .delegate() została zastąpiona przez .ON metody().
+1

to jednak nieistotne, ponieważ podany kod działa. – gotofritz

+1

Dochód dla noty odpowiadającej na pytanie. OP zapytał o .delegate(). – jfriend00

+0

@ fritzfromlondon, nawet jeśli obecnie pracuje _ dla ciebie_, nie wiemy dokładnie, co jeszcze robi OP, aby go złamać.Ponieważ obie metody zostały zaktualizowane, PO powinien zwrócić uwagę. – Sparky