Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [jQuery] Pinezki jak na NK
sebekzosw
post 18.09.2010, 15:18:25
Post #1





Grupa: Zarejestrowani
Postów: 437
Pomógł: 42
Dołączył: 16.04.2007

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


Witam!
Zacząłem robić skrypt pinezek taki jak na nk (a przynajmniej podobny). Obecnie jestem na takim etapie:
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  3. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  4. <meta name="author" content="sebekzosw" />
  5. <link href="css/style.css" rel="stylesheet" type="text/css" />
  6. <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.js"></script>
  7. <script type="text/javascript">
  8. var move = false;
  9. var pin_id = 0, set = true;
  10. jQuery(document).ready(function()
  11. {
  12. $(document).mousemove(function(e)
  13. {
  14. if(move)
  15. {
  16. $('#pin_'+pin_id).css({'left':e.pageX+5+'px', 'top' : e.pageY+5+'px'});
  17. }
  18. });
  19.  
  20. $("#photo").click(function(e)
  21. {
  22. if(move)
  23. {
  24. var pos = $(this).position();
  25. pos.left = parseInt(pos.left);
  26. pos.top = parseInt(pos.top);
  27. var x = e.pageX - pos.left;
  28. var y = e.pageY - pos.top;
  29. move = false;
  30. $('<div></div>').css({
  31. 'position' : 'absolute',
  32. 'width' : '200px',
  33. 'height' : '200px',
  34. 'left' : x+35+'px',
  35. 'top' : y+35+'px',
  36. 'zIndex' : '0',
  37. 'backgroundColor' : 'white',
  38. 'border' : '1px solid black' }).attr('id', 'added_'+pin_id).html("Treść (maksymalnie 100 znaków):<br /><a href='' onclick='Usun(); return false;'>x</a><br /><textarea cols='20' rows='5'>"+x + ", " + y +"</textarea><input type='button' onclick='Zapisz(); return false;' value='Zapisz' />").appendTo('body');
  39. //alert();
  40. }
  41. return false;
  42. });
  43.  
  44. $("#pp").click(function(e)
  45. {
  46. if(pin_id == 0)
  47. {
  48. pin_id = new Date().getTime();
  49. move = true;
  50. set = true;
  51. var pos = $(this).position();
  52. pos.left = parseInt(pos.left);
  53. pos.top = parseInt(pos.top);
  54. var x = e.pageX - pos.left;
  55. var y = e.pageY - pos.top;
  56. $('<div></div>').css({
  57. 'position' : 'absolute',
  58. 'width' : '34px',
  59. 'height' : '34px',
  60. 'left' : x+'px',
  61. 'top' : y+'px',
  62. 'zIndex' : '2',
  63. 'background' : 'url(http://ba013.k12.sd.us/images/note2.gif) no-repeat'}).attr({'id' : 'pin_'+pin_id}).appendTo('body');
  64. }
  65. else if(pin_id != 0 && !set)
  66. {
  67. $('#pin_'+pin_id).remove();
  68. move = false;
  69. set = false;
  70. }
  71. return false;
  72. });
  73.  
  74. $('.complete').click(function(){
  75. alert('s');
  76. return false;
  77. });
  78. });
  79.  
  80. function Zapisz()
  81. {
  82. $('#added_'+pin_id).text('treść mojej pinezki').hide();
  83. $('#pin_'+pin_id).css({'zIndex' : '0'}).addClass('complete');
  84. pin_id = 0;
  85. set = false;
  86. move = false;
  87. }
  88.  
  89. function Usun()
  90. {
  91. $('#pin_'+pin_id).remove();
  92. $('#pin_'+pin_id).remove();
  93. pin_id = 0;
  94. set = false;
  95. move = false;
  96. }
  97. </script>
  98. </head>
  99.  
  100.  
  101. <img src="http://media2.pl/pliki/lech_kasa_promocja.jpg" id="photo" />
  102. <a href="lol.html" id="pp">Przypnij pinezke</a>
  103.  
  104. </body>
  105. </html>


Chciałem zrobić takie coś, że jak przypnę coś na zdjęciu, zapiszę to po najechaniu mi się wykona akcja pokazująca to co zapisałem. Jednak mam problem z $('.complete'). Powinno się po kliknięciu na ten element z klasą .complete (czyli jak pinezka została zapisana i przypięta, ta class jest dopisywana) wykonywać odpowiednie zadanie (w moim przypadku wyświetlić alert z napisem "s" ). Jednak nie działa mi to ;/ czym to jest spowodowane? Tym, że div ma pozycje absolutną? (wydaje mi się, że to bez znaczenia). Jeżeli zacznie mi się wyświetlać alert to wtedy będę mógł zrobić, że po najechaniu na to pokaże mi się div z moją treścią.

Ten post edytował sebekzosw 18.09.2010, 15:32:09
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
devnul
post 19.09.2010, 00:16:55
Post #2





Grupa: Zarejestrowani
Postów: 1 470
Pomógł: 75
Dołączył: 21.09.2005
Skąd: że znowu

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


daj jakieś działające online demo bo tak to nawet mi się czytać tego kodu nie chce


--------------------
Profesjonaliści są przewidywalni...
strzeż się amatorów...
FL4SHB4CK - imprezy, galerie, lokale
Go to the top of the page
+Quote Post
sebekzosw
post 19.09.2010, 09:59:11
Post #3





Grupa: Zarejestrowani
Postów: 437
Pomógł: 42
Dołączył: 16.04.2007

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


demo
Go to the top of the page
+Quote Post
devnul
post 19.09.2010, 12:53:17
Post #4





Grupa: Zarejestrowani
Postów: 1 470
Pomógł: 75
Dołączył: 21.09.2005
Skąd: że znowu

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


nie działa bo odwołujesz się do istniejących elementów .complete i nie tworzysz nowego zdarzenia po przypięciu kolejnych pinezek. Żeby temu użyj live()
[JAVASCRIPT] pobierz, plaintext
  1. $('.complete').live("click",function(){
  2. alert('s');
  3. return false;
  4. });
[JAVASCRIPT] pobierz, plaintext

dzięki temu zdarzenie będzie działało w przeciwieństwie do bind() czy zdarzeń typu one(), albo click(), nie tylko na już stworzonych pinezkach ale także na tych które dodasz po deklaracji zdarzenia.


--------------------
Profesjonaliści są przewidywalni...
strzeż się amatorów...
FL4SHB4CK - imprezy, galerie, lokale
Go to the top of the page
+Quote Post
sebekzosw
post 19.09.2010, 13:38:23
Post #5





Grupa: Zarejestrowani
Postów: 437
Pomógł: 42
Dołączył: 16.04.2007

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


dzięki wielkie - rzeczywiście pomogło, a ja zapomniałem o tej funkcji winksmiley.jpg

oto wersja poprawiona: demo
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: 22.06.2025 - 20:11