jquery nowy event i brak reakcji

0

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

$('#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.

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

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

$('#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;)

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:

$(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/

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;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1