Ubuntu Suomen keskustelualueet
Ubuntun käyttö => Ohjelmointi, palvelimet ja muu edistyneempi käyttö => Aiheen aloitti: 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.
-
Kokeilin tuota itse nopeasti ja kyllä tuo ihan oikein näyttää toimivan:
<!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:
$(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):
$(window).click(function(evt) { console.log(evt.target); });
-
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...