سؤال

هل هناك أي سبب لعدم عمل النقرة في IE6 على كود JQuery التالي؟راجع ...$('#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 أصلاً من قبل وكان السلوك هو نفسه.لقد استبعدت أيضًا مشكلات CSS المحتملة نظرًا لاستمرار المشكلة بدون ورقة الأنماط.

هل كانت مفيدة؟

المحلول

مجرد شيء صغير، لا يستطيع IETester قراءة ملفات تعريف الارتباط.قد يؤثر هذا على الأشياء.على الرغم من أنك قلت أنك اختبرت في IE6 الأصلي، لذلك ربما لا تكون هذه هي المشكلة، ولكن الأمر يستحق المعرفة.

نصائح أخرى

هل toggleVAT وصلة؟ محاولة العودة false في الاستدعاء.

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

والقيام بذلك على منع سلوك النقرة الافتراضي يتم تنفيذه.

ولا يمكنك استدعاء التعليمات البرمجية switchButton مرتين؟ مرة واحدة داخل النقر معالج والمرة الثانية داخل وظيفة switchPrices؟ لا أن تبديل القيم مرة أخرى إلى حالته الأصلية؟

وجرب هذا:

ولا يمكنك يدعو switchButtonc قصيدة مرتين؟ مرة واحدة داخل النقر معالج والمرة الثانية داخل وظيفة 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);
}

وأيضا، إذا كنت ج: okie مع وضع ضريبة القيمة المضافة ب "EXC 'بدلا من' EX '، يمكنك تبسيط رمز إلى أبعد من ذلك.

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

أذكر أن هناك مشكلات عندما يكون لديك عدة إصدارات (-> مخترقة) من IE تعمل على نفس النوافذ.

وأيضًا إذا كنت تستخدم شريط أدوات IE Developer، فتأكد من عدم تعطيل ملفات تعريف الارتباط.


بالنسبة لي، يعمل الكود الخاص بك دون مشاكل في 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