Moja funkcja nie jest zwolniona po kliknięciu znacznika. Oto mój kod:

HTML:

<div data-role="footer">
    <div data-role="tabstrip" id="tabs"> 
        <a href="views/contacts.html" data-icon="home" id="home">Home</a>  
        <a href="views/settings.html" data-icon="settings" id="settings">Settings</a>
        <a onclick="signOff()" href="views/home.html" data-icon="settings" id="contacts">Log Out</a>
    </div>
</div>

JavaScript:

function signOff() {
    console.log("something");
    VCare.VCareWebService.signOff({cache:false,
        callback:function(xml) { // invoke the service
            // use jQuery to extract information we are interested in
            console.log(xml);
        }
   });
}
-1
btf217 12 sierpień 2014, 09:30

4 odpowiedzi

Najlepsza odpowiedź

Nie możesz mieć funkcji onClick i prawidłowej atrybutu href w <a>. Zmień element kotwicy do:

<a onclick="signOff()" href="javascript:void(0)" data-icon="settings" id="contacts">Log Out</a>

Możesz przekierować stronę za pomocą JavaScript, jeśli chcesz.

1
Basit 12 sierpień 2014, 05:33

Musisz zmienić swój znacznik

<a  href="javascript:signOff();
window.location = "views/home.html" data-icon="settings" id="contacts">Log Out</a>
1
Omar Sedki 12 sierpień 2014, 05:40

Innym sposobem jest upewnienie się, że twoje onclick zwraca false, aby zatrzymać domyślne zdarzenie od uruchomienia.

<a onclick="signOff(); return false" href="views/home.html" data-icon="settings" id="contacts">Log Out</a>

Lub..

<a onclick="return signOff();" href="views/home.html" data-icon="settings" id="contacts">Log Out</a>

function signOff() {
    console.log("something");
    VCare.VCareWebService.signOff({cache:false,
        callback:function(xml) { // invoke the service
            // use jQuery to extract information we are interested in
            console.log(xml);
        }
   });

   return false;
}
0
Jeremy J Starcher 12 sierpień 2014, 05:35

Polecam nie korzystanie z metody OnClick. Nie tylko wydaje to najwyraźniej konflikt z domyślną obsługą HREF, ale może również powodować niewielkie kwestie wizualne, w których klikanie w marginesie elementu itp., Może zadzwonić do funkcji bez podświetlania tekstu sposobu, w jaki można się spodziewać w normalnym łączu .

Zamiast tego użyj:

<a  href="javascript:signOff()" data-icon="settings" id="contacts">Log Out</a>

Następnie po prostu zmieniaj adres strony w funkcji signOff, przy użyciu this.document.location.href = location lub podobne

Edytuj: wygląda jak window.Location działa lepiej. +1 dla Omara wygląda na to, że ma tę samą odpowiedź

0
QuinnFreedman 12 sierpień 2014, 05:57