Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript] wykrywanie kliknięcia
sannin
post 30.04.2009, 01:23:18
Post #1





Grupa: Zarejestrowani
Postów: 308
Pomógł: 13
Dołączył: 31.10.2008

Ostrzeżenie: (0%)
-----


Jak wykryć kliknięcie np. na div ? Próbowałem coś z window.attachEvent, ale niestety moja wiedza jest marna :/
Go to the top of the page
+Quote Post
nieraczek
post 30.04.2009, 05:09:52
Post #2





Grupa: Zarejestrowani
Postów: 405
Pomógł: 6
Dołączył: 12.01.2007

Ostrzeżenie: (0%)
-----


Chcesz koniecznie w zwykłym javascript ? Bo w zwykłym javascript nie pamiętam, ale jakbyś ściągnął bibliotekę jquery z tej strony: http://jquery.com/
to mógłbyś to zrobić tak:
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  4. <title>Dokument bez tytułu</title>
  5. <script type="text/javascript" src="jquery.js"></script>
  6. <script type="text/javascript">
  7.  
  8. $(document).ready(function() //kiedy strona zostanie zaladowana
  9. {
  10. $("#klik").click(function() //kliknieto element o id='klik'
  11. {
  12. alert("Hello world!"); //okno alertu
  13. $(this).css('color', 'yellow'); //oraz zmiana koloru na zolty
  14. });
  15. });
  16.  
  17. </head>
  18.  
  19.  
  20.  
  21. <div id="klik">Kliknij mnie</div>
  22.  
  23. </body>
  24. </html>


Ten post edytował nieraczek 30.04.2009, 05:12:42
Go to the top of the page
+Quote Post
slawny
post 30.04.2009, 07:27:29
Post #3





Grupa: Zarejestrowani
Postów: 214
Pomógł: 26
Dołączył: 7.11.2007
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


A może jakieś onclick?
Go to the top of the page
+Quote Post
skowron-line
post 30.04.2009, 08:45:14
Post #4





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

Ostrzeżenie: (0%)
-----


google.pl ->actionListener
http://bytes.com/groups/javascript/523605-...ener-javascript tu jest podobny wątek.


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
sannin
post 30.04.2009, 09:07:13
Post #5





Grupa: Zarejestrowani
Postów: 308
Pomógł: 13
Dołączył: 31.10.2008

Ostrzeżenie: (0%)
-----


Ok problem został rozwiązany, ale pojawił się inny klikam na div i innerHTML dodaje do niego 2 div i teraz jquery nie wykrywa mi klikniec na te dodane div. Myśle że to uchodzi o to że trzeba by zmienic
  1. $(document).ready( function()
na cos innego tylko na co ?

Ten post edytował sannin 30.04.2009, 09:27:09
Go to the top of the page
+Quote Post
osl
post 30.04.2009, 09:29:46
Post #6





Grupa: Zarejestrowani
Postów: 260
Pomógł: 41
Dołączył: 6.04.2009
Skąd: Gdańsk/okolice

Ostrzeżenie: (0%)
-----


nie zadużo tego kodu podałeś, ale strzelam, że powinieneś się zainteresować eventem typu Live - zerknij w dokumentacji jQuery.
Go to the top of the page
+Quote Post
sannin
post 30.04.2009, 09:41:31
Post #7





Grupa: Zarejestrowani
Postów: 308
Pomógł: 13
Dołączył: 31.10.2008

Ostrzeżenie: (0%)
-----


Kodu nie ma za dużo więc nie ma co podawać z live nie działa

  1. $(document).live( function() {
  2. $("#anuluj").click( function() {
  3. alert('gtfv');
  4. });
  5. });';
Go to the top of the page
+Quote Post
osl
post 30.04.2009, 09:54:22
Post #8





Grupa: Zarejestrowani
Postów: 260
Pomógł: 41
Dołączył: 6.04.2009
Skąd: Gdańsk/okolice

Ostrzeżenie: (0%)
-----


chyba nie do końca zrozumiałeś o co chodzi z live winksmiley.jpg
jeślli już to
  1. $("#anuluj").live(function() {})


$(document).ready jest uruchamiane tylko po załadowaniu strony, dlatego nie łapie nowo dodanych divów.
najlepiej pokaż jak dodajesz nowe elementy
Go to the top of the page
+Quote Post
sowiq
post 30.04.2009, 09:58:38
Post #9





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 339
Dołączył: 14.12.2006
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Bo $(document).ready() wywołuje się zaraz po załadowaniu drzewa DOM (czyli całej strony). Wtedy jQuery przypisuje Twoim div'om zdarzenie onclick. Ale później dodajesz jeszcze jednego div'a - on siłą rzeczy nie ma przypisanego zdarzenia.

Nie napisałeś co chcesz osiągnąć, ale możesz zrobić np. tak:
  1. $(document).ready( function(){
  2. $('div').click( function(){
  3. klikniecie(); // uruchomienie funkcji
  4. var ndiv = $('<div>');
  5. ndiv.click( klikniecie ); // przypisanie tego samego zdarzenia do nowego div'a
  6. $(this).append( ndiv );
  7. });
  8. });
  9. function klikniecie(){
  10. alert('Kliknieto!');
  11. }

Pisane z palca.
Go to the top of the page
+Quote Post
sannin
post 30.04.2009, 10:30:55
Post #10





Grupa: Zarejestrowani
Postów: 308
Pomógł: 13
Dołączył: 31.10.2008

Ostrzeżenie: (0%)
-----


Osiągnąć chcę coś takiego: mam diva który wygląda jak przycisk w zdarzeniu onclick ma wywołanie funkcji dodaj(), znowu ta funkcja dodaje do innego div tresc (sprawia że on się pojawia). I teraz w tym nowo dodanym divie mam przycisk zamknij który ma wstawiac w tego diva pusta tresc (czyli go zamykac). Mój problem polega na tym że nie działa mi przycisk zamykania :/
Go to the top of the page
+Quote Post
osl
post 30.04.2009, 10:50:29
Post #11





Grupa: Zarejestrowani
Postów: 260
Pomógł: 41
Dołączył: 6.04.2009
Skąd: Gdańsk/okolice

Ostrzeżenie: (0%)
-----


to sprawia że się pojawia czy dodaje nowego DIVa do DOM? bo to róznica winksmiley.jpg
pokaż kod funkcji dodaj(), to może znajdziemy rozwiązanie smile.gif
Go to the top of the page
+Quote Post
sannin
post 30.04.2009, 12:49:41
Post #12





Grupa: Zarejestrowani
Postów: 308
Pomógł: 13
Dołączył: 31.10.2008

Ostrzeżenie: (0%)
-----


To jest tak funkcja
  1. function glosowanie_m(pole, pole2, div_g){
  2.  
  3. var empty = \"\";
  4. var html_m = \"<div id='test'><div class='box1'><div class='tresc1'><br /><center><span style='font-size: 12px; font-weight: normal;'>Ilość ofert: <b>o</b> od: <b>\" + document.getElementById(pole).value + \"</b> zł do: <b>\" + document.getElementById(pole2).value + \"</b> zł wymagana ilość kredytów: <b>sdf</b></span> <br /><br /> <table><tr><td style='cursor: pointer; padding: 2px; border: 1px solid #DDDDDD;'><table><tr><td><img src='_images/v.png'></td><td width='70' align='center' style='font-size: 12px; font-family: tahoma;'><b>zatwierdĽ</b></td></tr></table></td><td width='10'></td><td width='100' align='center' style='cursor: pointer; padding: 2px; border: 1px solid #DDDDDD;' id='anuluj'><table><tr><td><img src='_images/c.png'></td><td style='font-size: 12px; font-family: tahoma;'><b>anuluj</b></td></tr></table></td></tr></table></center><p class='linia'></p></div></div><p class='cien'>&nbsp;</p></div>\";
  5.  
  6. if((document.getElementById(pole).value == '' && document.getElementById(pole2).value == '') || (document.getElementById(pole).value == 'Od' && document.getElementById(pole2).value == 'Do')){
  7. alert('puste');
  8. } else {
  9. if(document.getElementById(div_g).innerHTML == ''){
  10. document.getElementById(div_g).innerHTML += html_m;
  11. }
  12. }
  13.  
  14. }


Myślałem o danium w anuluj onclick ale wtedy brakuje mi cudzysłowi i wywala bląd. Zmienna
  1. var html_m = "onclick='getElementById('anuluj')' cos tam ... "
Go to the top of the page
+Quote Post
osl
post 30.04.2009, 12:58:59
Post #13





Grupa: Zarejestrowani
Postów: 260
Pomógł: 41
Dołączył: 6.04.2009
Skąd: Gdańsk/okolice

Ostrzeżenie: (0%)
-----


jak już zaczynasz robić w jQuery polecam reszte też przenieść na jQuery - życie jest wtedy łatwiejsze.
próbowałeś "wyeskejpować" te cudzysłowy w ostatniej linijce za pomocą "\"?

albo po prostu dodaj kod bezpośrednio w tagu z id="anuluj", coś w guście:
  1. ... id="anuluj" onclick="zamknij()"...

i dopisz funkcje zamknij().

I jeszcze jedna opcja - po dodaniu nowej zawartości przez innerHTML spróbuj dostać się do #anuluj przez jQuery
  1. $("#anuluj").click(function(){})

jedyne ryzyko przy tej opcji, że przeglądarka nie zdąży zaktualizować drzewa DOM.
Go to the top of the page
+Quote Post
sannin
post 30.04.2009, 13:12:47
Post #14





Grupa: Zarejestrowani
Postów: 308
Pomógł: 13
Dołączył: 31.10.2008

Ostrzeżenie: (0%)
-----


ok, jakos sie wyplatałem smile.gif dzięki
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.05.2025 - 06:17