문제

다음 jQuery 코드에서 클릭이 IE6에서 작동하지 않는 이유가 있습니까? 참조 ... $ ( '#togglevat'). 클릭 (함수 ... IE7 및 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;
    });
});

IE6에서 switchPrices ()가 한 번 실행되지만 #ToggleVat을 클릭하면 코드가 실행되지 않습니다. 나는 최신 미니스트 jQuery를 사용하고 있습니다. #ToggleVat은 단지 단락입니다. 나는 Ietester를 사용하고 있습니다 http://my-debugbar.com/wiki/ietester/homepage. 나는 이전에 IE6을 실행하기 전에 그것을 확인했고 Bahaviour는 동일했습니다. 또한 스타일 시트없이 문제가 지속되면서 CSS 문제를 해결했습니다.

도움이 되었습니까?

해결책

작은 것, Ietester는 쿠키를 읽을 수 없습니다. 이것은 사물에 영향을 줄 수 있습니다. 비록 당신은 원시 IE6에서 테스트했다고 말했지만 아마도 문제는 아니지만 알아야 할 가치가 있습니다.

다른 팁

ToggleVat은 링크입니까? 콜백에서 거짓을 반환 해보세요.

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

이렇게하면 기본 클릭 동작이 실행되는 것을 방지합니다.

스위치 버튼 코드를 두 번 호출하지 않습니까? 클릭 핸들러 내부와 SwitchPrices 기능 내부에서 두 번째 시간이 되나요? 값을 원래 상태로 다시 전환하지 않습니까?

이 시도:

SwitchButtonc Ode를 두 번 부르지 않습니까? 클릭 핸들러 내부와 SwitchPrices 기능 내부에서 두 번째 시간이 되나요?

이 시도:

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

또한 'ex'대신 'exc'로 부가가치세 모드를 사용하는 경우 코드를 더욱 단순화 할 수 있습니다.

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

동일한 Wind

또한 IE 개발자 도구 모음을 사용하는 경우 쿠키를 비활성화하지 않도록합니다.


저에게 귀하의 코드는 IE6, FF 3.0.11 및 Opera 9.64에서 문제없이 작동합니다.

작은 샘플을 제공했습니다. 여전히 오류를 재현 할 수 있는지 테스트합니다.

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

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top