Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [jq + js] $().click() a dostęp do innej metody
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
webcitrn
Witam. Mój kod wygląda mniej więcej tak:
Kod
function Class() {
  this.foo1=1;
  this.foo2=2;

  this.Init=function() {
    // create HTML and append to DOM here
    this.AddListeners();
  }

  this.AddListeners=function() {
    $('get existing element right').click() {
      console.log('test');
      this.DoSome();           // exclamation.gif!
    }
  }

  this.DoSome=function() {
    console.log(this.foo2);
  }

}

var object=new Class();
object.Init();

Oczywiśćie funkcja DoSome() nie jest wywoływana. Na wyjściu konsoli wypisuje się 'test' więc skrypt wchodzi do .click(){} ale nie widzi funkcjki DoSome().. Domyślam się że jest to związane z przestrzeniami nazw. Ale za Chiny ludowe nie potrafię sobie z tym poradzić. Ktoś wie jak obejść ten problem ?
nospor
this w obrebie $(twoichobiektow) dotyczy sie tych obiektow a nie this klasy
webcitrn
Ale ja wiem że tak jest smile.gif Tylko nie wiem jak się dsstać jakby do klasy na rzecz której obiektu jest wywoływana funkcja (w tym przypadku .click()) smile.gif)) Nie ma w JS czegoś w rodzaju parent itp ? smile.gif czytałem o pseudoskładowej .caller ale nic nie dała..
nospor
tak na szybko
Kod
function Class() {
  this.foo1=1;
  this.foo2=2;
var dis = this;
  this.Init=function() {
    // create HTML and append to DOM here
    this.AddListeners();
  }

  this.AddListeners=function() {
    $('get existing element right').click() {
      console.log('test');
      dis.DoSome();           // !
    }
  }

  this.DoSome=function() {
    console.log(this.foo2);
  }

}

smile.gif
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.