2009-10-08 8 views
10

Obecnie używam coś takiego:Jak wysłać wiele argumentów do funkcji kliknięcia jQuery?

$('.myclass').click(function(){ 
    var msg = $(this).attr('id'); 
    alert(msg) 
}); 

i HTML:

< a href="#" class="myclass" id="101">Link</a> 

Jeśli muszę dodatkowe parametry, jak będę je czytać? Czy w aktualny sposób używam właściwego sposobu? Pierwotnie używałem ukrytych pól wejściowych, więc był już krok do przodu. : P

+0

Uważa się, że złą konwencją jest rozpoczęcie identyfikatora z numerem, ale jeśli nie używasz go jako identyfikatora, to prawdopodobnie jest OK - kiedy ostatnio sprawdzałem, Firefox nie rozpozna identyfikatora zaczynającego się od numeru. – Mottie

+0

tak, to jest poprawne ... nie zaczynaj swoich identyfikatorów od liczby, ale pomysł w mojej odpowiedzi jest wciąż taki sam. – Jason

Odpowiedz

18

jQuery Events

jQuery .click()

$('.myclass').bind("click", { Param1: "", Param2: 2 }, function(event){ 
    alert(event.data.Param2); 
}); 
+3

Czy to znaczy, że będę musiał włączyć tę funkcję na tej samej stronie? Obecnie wszystkie moje rzeczy js są w osobnym pliku. – Roger

+0

Więc, w danych zdarzeń mogę przekazać cały obiekt Json, prawda? Niezła funkcja. –

+0

@Roger możesz również mieć funkcję na zewnątrz, tylko spróbuj przeanalizować argumenty funkcji zewnętrznej przy użyciu metody event.data.ParamX, jak pokazuje odpowiedź. Działa idealnie. – andreszs

1

może nie być to najlepsza metoda, ale coś mam zrobić jest łącznikiem określającym atrybut id z innymi parametrami, takimi jak id="101-red-420582", które wszystkie trzy oznaczają różne rzeczy i mogą być łatwo podzielone przy użyciu split() funkcja. nie najlepszy, per se, ale zrobiłem to i to działa.

+2

Przypadkowo wpadłem na ten pomysł i działało dobrze, ale jak powiedziałeś, nie jesteś pewien, czy jest to poprawna metoda, a czasami ciąg może być dość duży (nie jestem pewien, czy istnieje ograniczenie identyfikatora). – Roger

+0

Używam podobnej metody przez cały czas, ale zamiast "id" używam atrybutu "rel". Wierzę, że albo będzie przechowywać tyle informacji, ile potrzebujesz, w tym HTML. – Mottie

0

Szybkie rozwiązanie

<p class="msg_head" id="837" rel="a" **till_limit="9"**>Header-1 </p>

i można odnieść jak

$(this).attr('till_limit'); 

Jest to podobne rozwiązanie jak określić swój własny identyfikator i odnoszą element jak na swoje wymagania.

+1

Proszę [nie używaj podpisów lub sloganów] (http://stackoverflow.com/faq#signatures) w swoich postach. – meagar

Powiązane problemy