Frage

Gibt es einen Grund, warum der Klick nicht auf den folgenden JQuery-Code in IE6 funktioniert? Siehe ... $ ( '# toggleVAT'). Klicken (Funktion ... Es funktioniert in IE7 und FF?

function switchButton(to){
    if(to === 'INC'){
    $('#toggleVAT').removeClass("exc");
    $('#toggleVAT').addClass("inc");
    $('#toggleVAT em').text("inc.");
    } else {
    $('#toggleVAT').addClass("exc");
    $('#toggleVAT').removeClass("inc");
    $('#toggleVAT em').text("exc.");
    }
}

function switchPrices(){
    if($.cookie('VATMODE') == "INC"){
    $('.price .incVAT').show();
    $('.price .excVAT').hide();
    switchButton('INC');
    } else {
    $('.price .incVAT').hide();
    $('.price .excVAT').show();
    switchButton('EX');
    }
}


$(function(){
    switchPrices();
    $('#toggleVAT').click(function(){
    if($.cookie('VATMODE') === 'INC'){
        $.cookie('VATMODE', 'EX');
        switchButton('EX');
    } else {
        $.cookie('VATMODE', 'INC');
        switchButton('INC');
    }
    switchPrices();
    return false;
    });
});

Auf IE6 switchPrices () läuft einmal, aber nicht den Code auszuführen, wenn ich #toggleVAT klicken. Ich bin mit neuester minimierte jQuery. #toggleVAT ist nur ein Absatz. Ich verwende IETester http://my-debugbar.com/wiki/IETester/HomePage. Ich habe es auf nativ IE6 laufen vor und die bahaviour war das gleiche. Ich habe auch möglich CSS Probleme wie das Problem weiterhin besteht, ohne Sheet rulled aus.

War es hilfreich?

Lösung

Nur eine kleine Sache, IETester nicht lesen können Cookies . Dies könnte Auswirkungen auf die Dinge. Obwohl, Sie sagten, Sie in einer nativen IE6 getestet, so dass es wahrscheinlich nicht das Problem, aber es lohnt sich zu wissen, über.

Andere Tipps

Ist toggleVAT einen Link? Versuchen Sie Rückkehr falsch in den Rückruf.

$('#toggleVAT').click(function(){
        if($.cookie('VATMODE') === 'INC'){
            $.cookie('VATMODE', 'EX');
            switchButton('EX');
        } else {
            $.cookie('VATMODE', 'INC');
            switchButton('INC');
        }
        switchPrices();
        return false;
    });

Dadurch verhindern Sie, dass das Standard-Klickverhalten ausgeführt wird.

Sind Sie nicht switchButton Code ruft zweimal? Einmal in dem Click-Handler und zweites Mal innerhalb der switchPrices Funktion? Wäre das nicht die Werte in den ursprünglichen Zustand zurückschalten?

Versuchen Sie folgendes:

Sind Sie nicht switchButtonc ode Aufruf zweimal? Einmal in dem Click-Handler und zweites Mal innerhalb der switchPrices Funktion?

Versuchen Sie folgendes:

$(
    function()
    {
        $('#toggleVAT').click(
            function()
            {
                switchPrices();
                return false;
            }
           );
        switchPrices();
    }
);

function switchPrices()
{
    var targetVatMode = $.cookie('VATMODE') == 'INC' ? 'EX' : 'INC';
    $.cookie('VATMODE', targetVatMode);
    var removeClassName = targetVatMode == 'INC' ? 'exc' : 'inc';
    var addClassName = targetVatMode == 'INC' ? 'inc' : 'exc';
    var displayText = targetVatMode == 'INC' ? 'inc.' : 'exc.';

    var elementToShow = targetVatMode == 'INC' ? '.price .incVAT' : '.price .excVAT';
    var elementToHide = targetVatMode == 'INC' ? '.price .excVAT' : '.price .incVAT';

    $(elementToShow).show();
    $(elementToHide).hide();


    $('#toggleVAT')
        .addClass(addClassName)
        .removeClass(removeClassName)
        .find('em')
            .text(displayText);
}

Auch wenn Sie sind okie mit Vat-Modus als ‚EXC‘ anstelle von ‚EX‘, Sie den Code vereinfachen können sogar noch weiter.

function switchPrices()
{
    var oldVatMode = $.cookie('VATMODE');
     //Define your Vat mode as EXC instead of EX.
    var newVatMode = oldVatMode == 'INC' ? 'EXC' : 'INC';
    $.cookie('VATMODE', newVatMode);

$('#toggleVAT')
        .addClass(newVatMode.toLowerCase()) 
        .removeClass(oldVatMode.toLowerCase())
        .find('em')
            .text(newVatMode.toLowerCase() + '.');

    $('.price .' + newVatMode + 'VAT').show();
    $('.price .' + oldVatMode + 'VAT').hide();
}

Ich erinnere mich, dass es Probleme gibt, wenn Sie mehrere haben. (-> gehackt) IE-Versionen auf demselben Windows läuft

Auch wenn Sie die IE Developer Toolbar Prüfung verwenden, dass es deaktivieren keine Cookies.


Für mich Ihr Code funktioniert ohne Probleme in IE6, FF 3.0.11 und Opera 9.64.

Ich bot eine kleine Probe. Um zu testen, ob Sie immer noch den Fehler reproduzieren können.

http://pastebin.com/m7e8d87c6

jquery.js -> http://jqueryjs.googlecode.com /files/jquery-1.3.2.min.js

jquery.cookie.js -> http://plugins.jquery.com/files /jquery.cookie.js.txt

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top