Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MooTools] przekazanie this do zdarzenia
phpion
post 7.01.2009, 19:55:02
Post #1





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Witam,
chcę sobie napisać prościutki system zakładek ale utknąłem w pewnym miejscu i nie bardzo wiem jak to rozegrać:
Kod
var Tabs = new Class({
    initialize: function(menu, content) {        
        this.menu = menu;
        this.content = content;
        
        $(this.content).getChildren().setStyle("display", "none");

        $(this.menu).getElements("a").addEvent("click", function(e){
            e.stop();
        
            // tu mam problem
        });
    }
});

W konstruktorze menu oznacza listę <ul> z menu, natomiast content to div zawierający divy z zawartościami poszczególnych zakładek.

I teraz problem: do każdego linku chciałbym dodać funkcję ($(this.menu).getElements("a").addEvent("click")), wewnątrz której miałbym dostęp zarówno do klikniętego linku w celu pobrania np. this.href oraz równocześnie dostęp do aktualnego obiektu klasy Tabs aby pobrać wartość this.menu. Jak to zrobić?

Tak sobie wyświetlam href linku:
Kod
$(this.menu).getElements("a").addEvent("click", function(e){
    e.stop();

    alert(this.href);
});


Natomiast tak (dodając bind()) mogę dostać się do aktualnego obiektu:
Kod
$(this.menu).getElements("a").addEvent("click", function(e){
    e.stop();

    alert(this.menu);
}.bind(this));

Jednak jak sprawić abym miał dostęp do obu rzeczy na raz?

Z góry dzięki za pomoc,
pion

PS: może źle do tego podchodzę - w razie czego proszę o podsunięcie innego pomysłu.
PS2: Wcięcia szlag trafił?

Ten post edytował phpion 7.01.2009, 19:56:53
Go to the top of the page
+Quote Post
Rafal Filipek
post 7.01.2009, 21:02:16
Post #2





Grupa: Zarejestrowani
Postów: 274
Pomógł: 54
Dołączył: 2.05.2006
Skąd: Nadarzyn

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


zrób sobie może w metodzie initialize
Kod
var $this = this;
bedzie ona dla kazdego Tabs przechowywała to co trzeba smile.gif.
Go to the top of the page
+Quote Post
phpion
post 7.01.2009, 21:13:53
Post #3





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Nie bardzo rozumiem... co ma to dać? Kwestia jest taka, że chcę mieć dostęp zarówno do konkretnego obiektu klasy Tabs oraz równocześnie do obiektu <a>, który został kliknięty. Nie bardzo wiem jak zastosować to, o czym piszesz (i co to da).
Go to the top of the page
+Quote Post
Rafal Filipek
post 7.01.2009, 21:22:32
Post #4





Grupa: Zarejestrowani
Postów: 274
Pomógł: 54
Dołączył: 2.05.2006
Skąd: Nadarzyn

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


No dobra to może przykład będzie bardziej obrazowy smile.gif
  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="pl" lang="pl">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
  5. <script type="text/javascript" src="mootools.js"></script>
  6. <script type="text/javascript">
  7. var Tabs = new Class({
  8. initialize: function(menu, content) {
  9. this.menu = menu;
  10. this.content = content;
  11. var $this = this;
  12.  
  13. $(this.content).getChildren().setStyle("display", "none");
  14.  
  15. $(this.menu).getElements("a").addEvent("click", function(e){
  16. e.stop();
  17. alert($this.menu.get('title'));
  18. });
  19. }
  20. });
  21. </script>
  22. </head>
  23. <body>
  24. <ul id="menu1" title="Moje 1 menu">
  25. <li><a href="">1</a></li>
  26. <li><a href="">2</a></li>
  27. <li><a href="">3</a></li>
  28. </ul>
  29. <div id="content1"></div>
  30. <ul id="menu2" title="Moje 2 menu">
  31. <li><a href="">a</a></li>
  32. <li><a href="">b</a></li>
  33. <li><a href="">c</a></li>
  34. </ul>
  35. <div id="content2"></div>
  36. <script type="text/javascript">
  37. new Tabs($('menu1'),$('content1'));
  38. new Tabs($('menu2'),$('content2'));
  39. </script>
  40. </body>
  41. </html>
Go to the top of the page
+Quote Post
phpion
post 7.01.2009, 21:28:27
Post #5





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Dzięki! Faktycznie wprowadzenie lokalnej zmiennej rozwiązało sprawę. Jeszcze raz 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: 14.08.2025 - 11:36