Kirjoittaja Aihe: RatkaistuQueryn click tapahtumassa viittaus window-objektin eikä click objektiin  (Luettu 3152 kertaa)

JA5U

  • Käyttäjä
  • Viestejä: 462
    • Profiili
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.
« Viimeksi muokattu: 04.05.18 - klo:22.25 kirjoittanut JA5U »

Tomin

  • Palvelimen ylläpitäjä
  • Käyttäjä / moderaattori+
  • Viestejä: 11442
    • Profiili
    • Tomin kotisivut
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); });
« Viimeksi muokattu: 04.05.18 - klo:14.08 kirjoittanut Tomin »
Automaattinen allekirjoitus:
Lisäisitkö [RATKAISTU] ketjun ensimmäisen viestin aiheeseen ongelman ratkettua, kiitos.

JA5U

  • Käyttäjä
  • Viestejä: 462
    • Profiili
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...