przekazywanie argumentów do funkcji bez jej wywolania

0

przykładowo:

//JS

function a() {
 var x = '#blok';
 $(x).fadeIn(500);
 $(x).click(b(x));
}

function b(x) {
 $(x).fadeOut;
}

i w takiej sytuacji linia x.click(b(x)); automatycznie powoduje wykonanie funkcji b(x), a ja chcialbym zeby to bylo tylko przypisanie zdarzenia click. jakas rada jak to ominac? dotychczas omijalem ten problem poprzez zmienna globalna, ktorej wartosc podawalem w funkcji "a", a w funkcji "b" moglem z niej skorzystac. ale sadze ze musi byc jakis 'normalny' sposob :)

0

To moze przypisz zdarzenie, skoro chcesz je przypisac, a nie wywolac? [glowa]

0
function b() {
  $(this).hide();
}
x.click(b)
0

@nav:
@DewREW:
A to nie jest tak, że u niego te x-y to mogą być różne elementy? Czyli że raczej powinien to napisać (żebyśmy zrozumieli o co chodzi) tak:

x.click(b(y)); 

Wnioskuję po tym, że raczej rzadko robi się tak, że po kliknięciu jakiegoś elementu ten element się chowa. Zwykle klika się na jeden element (np. przycisk) i to chowa inny element (np. okienko wyskakujące, sekcję strony). Czasami natomiast element faktycznie chowa sam siebie -- jeśli o to tutaj chodzi, to kod jaki dał @nav jest OK.

Jeśli zaś kliknięcie w jeden element ma schować drugi, to robi się to tak:

x.click(function() {
  b.call(this, y);
  // nieraz wystarczy po prostu:
  // b(y);
}); 

To ważny wzorzec, przydatny w JavaScripcie. Jest ogólny i bardziej odpowiada na pytanie postawione w temacie wątku. Mimo to, rozwiązanie @nav może się sprawdzić w tym konkretnym przypadku -- zależy o co chodziło autorowi.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.