• 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
60 wizyt
pytanie zadane 14 czerwca w JavaScript, jQuery, AJAX przez Mebya Użytkownik (700 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 (67,820 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 (67,820 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 (67,820 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 (700 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 (67,820 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 (700 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ź 62 wizyt
pytanie zadane 8 grudnia 2016 w JavaScript, jQuery, AJAX przez hoktaur Pasjonat (21,850 p.)
0 głosów
1 odpowiedź 64 wizyt
pytanie zadane 7 sierpnia 2017 w JavaScript, jQuery, AJAX przez ElBajcyko Nowicjusz (150 p.)
0 głosów
1 odpowiedź 86 wizyt
pytanie zadane 3 sierpnia 2017 w JavaScript, jQuery, AJAX przez Vorex444 Dyskutant (9,660 p.)
Porady nie od parady
Możesz ukryć, zamknąć lub zmodyfikować swoje pytanie, za pomocą przycisków znajdujących się pod nim. Nie krępuj się poprawić pochopnie opublikowanego pytania czy zamknąć go po uzyskaniu satysfakcjonującej odpowiedzi. Umożliwi to zachowanie porządku na forum.Przyciski pytania

54,442 zapytań

98,327 odpowiedzi

202,258 komentarzy

26,743 pasjonatów

Przeglądających: 157
Pasjonatów: 2 Gości: 155

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.

...