• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

przekazywanie argumentu do jquery

0 głosów
53 wizyt
pytanie zadane 14 czerwca w JavaScript, jQuery, AJAX przez Mebya Użytkownik (500 p.)
Witam,
W jquery chcę zrobić podmienianie zawartości wtedy gdy dany przycisk jest klikniety, mam cztery przyciski z id 0,1,2,3
I teraz pytanie jak przekazać do jquery który przycisk jest kliknięty, w czystym js po prostu dał bym onclick=funkcja(1)
i w skrypcie zrobił switcha, a w jquery to nie mam pojęcia jak to ugryźć.

1 odpowiedź

+1 głos
odpowiedź 14 czerwca przez pablop76 Maniak (53,700 p.)
wybrane 15 czerwca przez JSHolic
 
Najlepsza

W czystym js to nie byłaby dobra praktyka, ale nie o to pytasz więc w jq mamy tzw.kolekcje i automatyczne pętle więc sprawa jest banalna.

$('button').click(function(e){
  console.log(e.target);
});

e.target zwróci id klikniętego butona

1
komentarz 14 czerwca przez pablop76 Maniak (53,700 p.)
edycja 15 czerwca przez pablop76
Sprawdź w konsoli właściwości klikniętego obiektu, napewno znajdziesz to czego szukasz.
1
komentarz 15 czerwca przez pablop76 Maniak (53,700 p.)
edycja 15 czerwca przez pablop76

@Mebya,

To wykorzystaj przechwytywanie zdarzenia

update.currentTarget.id

W Twoim kodzie już jest pobrany ten element.

        var $link = $(update.currentTarget);

Masz tutaj referencje do całego klikniętego linku. Pobierasz z niego później do ajaxa href

url: $link.attr('href')

Więc dlaczego go nie wykorzystasz do pobrania id?

ja bym zrobił tak: zamiast $link

var $anchor = $(update.currentTarget);

var $href = $anchor.href;

var $id = $anchor.id;

I korzystał z tych zmiennych.

Jeszcze dla zachowania konwencji update zmieniłbym na e lub event, czyli zdarzenie

 

 

komentarz 15 czerwca przez Mebya Użytkownik (500 p.)

Zerknąłem teraz na adres URL który jest wywoływany wraz z kliknięciem no i właściwie o tym zapomniałem, 

$('#test').on('click',function(update){
 (...)
var $link = $(update.currentTarget);
}

wtedy nie jest wywoływany odpowiedni adres, bo nie jest kliknięty link tylko id diva "test" w którym te linki się znajdują, dlatego zamiast test powinny być po kolei id znaczników <a> inaczej var $link = $(update.currentTarget); zamiast przekazywać adres GunList/40/Customizing (tego poprawnego) przekazuje GunList/40 (niepoprawny) - wtedy JsonResponse nie jest przekazywany.
Podsumowując wracamy do początku i trzeba podmienić #test na id znaczników <a>

W skrócie onclick musi być na znacznik <a>, w innym wypadku zwracany jest nieodpowiedni adres url

1
komentarz 15 czerwca przez pablop76 Maniak (53,700 p.)
edycja 15 czerwca przez pablop76
Jeżeli wszystkie linki są w pojemniku id=test to możesz delegować zdarzenie do a, dodając jako drugi parametr metody on() a. Czyli $('#test').on('click','a',function(e){}

Dałem Ci linka do poczytania.
komentarz 15 czerwca przez Mebya Użytkownik (500 p.)
Dobra, działa jak trzeba, nareszcie.
Dzięki za pomoc i cierpliwość!
Ale jak pisałem, to moj pierwszy kontakt z JS i Jquery

Podobne pytania

0 głosów
1 odpowiedź 56 wizyt
pytanie zadane 8 grudnia 2016 w JavaScript, jQuery, AJAX przez hoktaur Pasjonat (21,870 p.)
0 głosów
1 odpowiedź 57 wizyt
pytanie zadane 7 sierpnia 2017 w JavaScript, jQuery, AJAX przez ElBajcyko Nowicjusz (150 p.)
0 głosów
1 odpowiedź 82 wizyt
pytanie zadane 3 sierpnia 2017 w JavaScript, jQuery, AJAX przez Vorex444 Dyskutant (9,660 p.)
Porady nie od parady
Pytania na temat serwisu SPOJ należy zadawać z odpowiednią kategorią dotyczącą tej strony.SPOJ

51,027 zapytań

93,344 odpowiedzi

189,543 komentarzy

24,885 pasjonatów

Przeglądających: 277
Pasjonatów: 13 Gości: 264

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...