Wpis z mikrobloga

#webdevhelp #jquery

Załóżmy, że mam zdarzenie

$('selektor').on('click', function() {
// tutaj togluje jakieś klasy po kliknięciu w selektor
});

W jaki sposób mogę wywołać callback, żeby obsłużyć drugie kliknięcie w ten sam selektor?

Czyli np.

//Przy pierwszym kliknięciu

$('button').on('click', function() {
$('div').css("display", "block");
});

//Przy drugim kliknięciu

$('button').on('click', function() {
$('div').css("display", "none");
});

Próbowałem tak:

$('button').on('click', function() {
$('div').css("display", "block");
}, function(){
$('div').css("display", "none");
);

Ale nie działa.
  • 4
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Eggy: dziękuję bardzo. Trochę skomplikowane, sam bym na to nie wpadł chociaż próbowałem zagnieżdżać jakoś funkcję. Będę już wiedział na przyszłość. :)

Pomęczę Cię jeszcze trochę jeśli można ;). Nie to, że nie rozumiem tego co mi wysłałeś, ale jest możliwość napisania to jakoś łatwiej bez używania 'click'? Może opiszę szerzej co próbuję zrobić.

Klikam w przycisk i nadaje jakiemuś elementowi klasę np. "showfromtop".
Klikam drugi raz i i nadaje mu
  • Odpowiedz
@PrawyKuba: Bez używania evetów, nie da się czegoś takiego osiągnąć. No bo niby skąd przeglądarka ma wiedzieć co zrobić po kliknięciu w przycisk? Musisz zdefiniować listiner, czy to przez metodę .on() z jQuery, czy przez .addEventListiner()
Jak chcesz usunąć/dodać klasę możesz użyć .removeClass() i .addClass(). Ewentualnie możesz użyć .toggleClass() ale wtedy będziesz miał tylko jeden callback http://codepen.io/Eggy/pen/xVYpLO
  • Odpowiedz