jquery nowy event i brak reakcji

jquery nowy event i brak reakcji
JU
  • Rejestracja:około 12 lat
  • Ostatnio:ponad 6 lat
  • Postów:149
0

Ok, pewnie pytanie wyda się bardzo noobowskie, ale nie wiem... mam funkcje

Kopiuj
$('#start').bind
(
    {
    click: function() 
        {
            jQuery(this).removeAttr("id").attr("id","stop").html();
            jQuery(this).unbind('click');
            $('#stop').attr('onclick','stop();');
        }
)

w której chcę wykonać usunięcie id, odbindowanie funkcji i bindować inną funkcje. Jednak funkcja przy 2gim kliku się nie wykonuje - czemu? I jak to naprawić?
Z gory dziękuje za pomoc i pozdrawiam.

edytowany 1x, ostatnio: juniorchat
dzek69
Moderator
  • Rejestracja:ponad 18 lat
  • Ostatnio:około miesiąc
  • Lokalizacja:Rzeszów
1

po co usuwasz atrybut, żeby w kolejnej operacji go dodać?
po co używasz html() na końcu, skoro wyniku nie zapisujesz do zmiennej?
dlaczego, skoro ogarniasz działanie bind to próbujesz nadać atrybut onclick?

pierwsze to wytłumacz co masz, i co chcesz osiągnąć. bo zdaje się że przekombinowałeś, ale zaraz to naprawimy


JU
  • Rejestracja:około 12 lat
  • Ostatnio:ponad 6 lat
  • Postów:149
0
dzek69 napisał(a):

po co usuwasz atrybut, żeby w kolejnej operacji go dodać?

dlatego, ze chcę zmienić właściwość przycisku,

dzek69 napisał(a):

po co używasz html() na końcu, skoro wyniku nie zapisujesz do zmiennej?

głupota, ale tonący chwycił się brzytwy, to tylko wynik moich nieudolnych prób zmuszenia do działania przycisku.

dzek69 napisał(a):

dlaczego, skoro ogarniasz działanie bind to próbujesz nadać atrybut onclick?

bo bind nie chce współpracować, jeżeli dodałem atrybut id=stop i remove id=start, a bind ustawiłem na

Kopiuj
$('#stop').bind
(
    {
    click: function() 
        {
           console.log("stop");
         }
});

to oczywiście nie chciało działać. Jednak nie wiem czemu?:P

dzek69 napisał(a):

pierwsze to wytłumacz co masz, i co chcesz osiągnąć. bo zdaje się że przekombinowałeś, ale zaraz to naprawimy

no chcę osiągnąć zmianę wykonywanej funkcji dla butona przy pierwszym i 2gim kliknięciu, tj.:
klikam buton #start wykonuje sie funkcja1, klikam 2gi raz i wykonuje się funkcja 2 ;)
help?:P Z góry dzięki za zainteresowanie tematem;)

edytowany 2x, ostatnio: juniorchat
RS
  • Rejestracja:ponad 22 lata
  • Ostatnio:8 miesięcy
1

Od jQuery 1.7 zalecaną w dokumentacji jQuery metodą bindowania jest .on (http://api.jquery.com/on/) zamiast .bind.

Odnośnie problemu - można to zrobić na różne sposoby - ze zmienną pomocniczą, z data-attribute, albo na klasie elementu - taki przykład prezentuję poniżej:

Kopiuj
$(document).on('click', '#mojButton', function() {
    if($(this).hasClass('start')) {
        $(this).removeClass('start').addClass('stop');
        return fStart();
    } else {
        $(this).removeClass('stop').addClass('start');
        return fStop();
    }
});

function fStart() {
    alert('Start');
}

function fStop() {
    alert('Stop');
}

http://jsfiddle.net/reksc/fzj2h/

JU
  • Rejestracja:około 12 lat
  • Ostatnio:ponad 6 lat
  • Postów:149
0

oczywiście działa jak należy ;)
A nawet zrezygnowałem ze zmieniania id tylko dodałem klasę;)
Przesiadam się więc na .on ;)
Dziękuje;)

edytowany 1x, ostatnio: juniorchat

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.