Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zdarzenie onClick.
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
finito
Usiłowałem znaleźć zdarzenie onClick w dokumentacji, ale znalazłem tylko click(). Zatem skąd parser ma wiedzieć, że rzeczywiście chodzi o kliknięcie a nie o najechanie myszką?

  1. //metoda prywatna
  2. function onClick(event) {
  3. //ciało metody prywatnej
  4. $this = $(this);
  5. data = $this.data("changeColor");
  6. data.first = !data.first;
  7. $this.css("background-color",
  8. data.first ? data.colorSecond : data.colorFirst);
  9. return true;
  10. }
Crozin
Skąd Ci przyszło do głowy, że zdarzenia najechania na coś myszką, może nosić nazwę click (kliknięcie)?
finito
Cytat(Crozin @ 10.05.2014, 13:53:07 ) *
Skąd Ci przyszło do głowy, że zdarzenia najechania na coś myszką, może nosić nazwę click (kliknięcie)?


Zupełnie źle mnie zrozumiałeś. W kodzie jest "onClick",prawda? No właśnie. Skąd parser ma wiedzieć, że chcemy faktycznie kliknąć? Czy "onClick" jest słowem zarezerwowanym dla jquery i oznacza kliknięcie? Skąd parser ma wiedzieć, że chodzi nam o kliknięcie?
Przecież treść tego skrypu pozwala jedynie zmienić kolor w zależności true lub false. W kodzie, nie ma żadnego info o kliknięciu lub najechaniu. Dlatego mnie to zastanawia.
  1. function onClick(event) {
  2. //ciało metody prywatnej
  3. $this = $(this);
  4. data = $this.data("changeColor");
  5. data.first = !data.first;
  6. $this.css("background-color",
  7. data.first ? data.colorSecond : data.colorFirst);
  8. return true;
  9. }

Crozin
To jest jedynie definicja funkcji o nazwie onClick - sama nazwa nie ma żadnego specjalnego znaczenia. Zapewne w innym miejscu kodu JS, a być może bezpośrednio w HTML-u występuje użycie/wywołanie tej funkcji.
finito
Cytat(Crozin @ 10.05.2014, 14:36:12 ) *
To jest jedynie definicja funkcji o nazwie onClick - sama nazwa nie ma żadnego specjalnego znaczenia. Zapewne w innym miejscu kodu JS, a być może bezpośrednio w HTML-u występuje użycie/wywołanie tej funkcji.


No właśnie też na to wpadłem, ale stworzyłem tutaj ten temat, bo w kodzie niżej nie mogę się doszukać fragmentu, który mówi właśnie o kliknięciu. Wszystko co przeczytałem powoduje jedynie zamianę kolorów.

  1. (function($) {
  2. $.fn.changeColor = function(options) {
  3.  
  4. //metoda prywatna
  5. function onClick(event) {
  6. //ciało metody prywatnej
  7. $this = $(this);
  8. data = $this.data("changeColor");
  9. data.first = !data.first;
  10. $this.css("background-color",
  11. data.first ? data.colorSecond : data.colorFirst);
  12. return true;
  13. }
  14.  
  15. //metody publiczne
  16. var methods = {
  17. swapColors: function() {
  18. //wystawiona metoda
  19. $this = $(this);
  20. data = $this.data("changeColor");
  21. tmp = data.colorSecond;
  22. data.colorSecond = data.colorFirst;
  23. data.colorFirst = tmp;
  24. },
  25. destroy: function() {
  26. //destruktor
  27. $this = $(this);
  28. $this.unbind("click");
  29. $this.css("background-color","");
  30. $this.removeData("changeColor");
  31. }
  32. };
  33.  
  34. return this.each(function() {
  35. //ciało naszego pluginu
  36. if(methods[options]){
  37. //wywołana metoda publiczna
  38. return methods[options].apply( this, arguments );
  39. }
  40. else if (typeof options === 'object' || ! options ){
  41. //wywołany konstruktor
  42. var settings = $.extend( {
  43. colorFirst : 'Red',
  44. colorSecond: 'Green'
  45. }, options);
  46. //inicjalizacja pluginu
  47. $this = $(this);
  48. data = $this.data("changeColor");
  49. if(!data)
  50. {
  51. data = $this.data("changeColor", settings);
  52. $this.bind("click", onClick);
  53. }
  54. $this.css("background-color", settings.colorFirst);
  55. data.first = true;
  56. return;
  57. }
  58. else{
  59. //bład
  60. $.error('changeColor: no method: '+ options);
  61. }
  62. });
  63. }
  64. })(jQuery);


Przepraszam najmocniej, ale już znalazłem to o co mi chodziło. Jakby ktoś podobny do mnie nowiciusz miał z tym kłopot, to chodzi ten fragment kodu:

  1. $this = $(this);
  2. data = $this.data("changeColor");
  3. if(!data)
  4. {
  5. data = $this.data("changeColor", settings);
  6. $this.bind("click", onClick);
  7. }
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.