Ubuntu Suomen keskustelualueet

Ubuntun käyttö => Ohjelmointi, palvelimet ja muu edistyneempi käyttö => Aiheen aloitti: JA5U - 04.05.18 - klo:13.53

Otsikko: RatkaistuQueryn click tapahtumassa viittaus window-objektin eikä click objektiin
Kirjoitti: JA5U - 04.05.18 - klo:13.53
Hei

Nyt en ihan ymmärrä, että miten elementtiin sidotussa click-tapahtumassa this-muuttuja viittaa window-objektiin?
Kyllähän sen lähtökohtaisesti tulisi olla joko ko. tapahtuma ja/tai se dom elementti, jota klikattiin.
Otsikko: Vs: jQueryn click tapahtumassa viittaus window-objektin eikä click objektiin
Kirjoitti: Tomin - 04.05.18 - klo:14.02
Kokeilin tuota itse nopeasti ja kyllä tuo ihan oikein näyttää toimivan:
Koodia: [Valitse]
<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>click demo</title>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
<p>Click me!</p>
<script>
$("p").click(function() { console.log(this); });
</script>
</body>
</html>

Klikatessa selaimen konsoliin ilmestyy oikea <p>-elementti.

Muokkaus:
Koodia: [Valitse]
$(window).click(function() { console.log(this); });Teitkö näin? Tuo antaa kyllä aina ikkunan riippumatta siitä, mihin se on suunnattu. Voit this-arvon sijaan katsoa tuon funktion ensimmäisen argumentin target-arvoa (testasin nopeasti toimivaksi Firefoxissa, kannattaa ehkä katsoa onko se ns. virallinen tapa):
Koodia: [Valitse]
$(window).click(function(evt) { console.log(evt.target); });
Otsikko: Vs: jQueryn click tapahtumassa viittaus window-objektin eikä click objektiin
Kirjoitti: JA5U - 04.05.18 - klo:22.25
Mulla oli kaiken lisäksi vielä "väärä" tapahtuma eli kyseessä oli rastiruutu, joten click piti olla change.

Sain sen kuitenkin tuolla "välimuuttujalla" toimimaan elit target.

En kyllä muista, että olisi ikinä tullut vastaan. Kaippa tuo on sitten harvinaisempi käyttötapaus...