jqueryie6点击问题

jqueryie6点击问题,jquery,cookies,click,internet-explorer-6,Jquery,Cookies,Click,Internet Explorer 6,在IE6中,在以下JQuery代码上单击不起作用有什么原因吗?请参阅…$(“#toggleVAT”)。单击(函数…它在IE7和FF中工作 function switchButton(to){ if(to === 'INC'){ $('#toggleVAT').removeClass("exc"); $('#toggleVAT').addClass("inc"); $('#toggleVAT em').text("inc."); } else { $

在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交换机价格()运行一次,但当我单击#toggleVAT时它不会执行代码。我使用的是最新的缩小jQuery。#toggleVAT只是一个段落。我使用的是IETester。我以前在本机运行IE6时检查过它,并且巴哈维奥是一样的。我还发现了可能的CSS问题,因为问题在没有样式表的情况下仍然存在。

toggleVAT是链接吗?Try在回调中返回false

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

这样做可以防止执行默认的单击行为。

切换是否为链接?请尝试在回调中返回false

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

这样做可以防止执行默认的单击行为。

我记得,当在同一个窗口上运行多个(->被黑客攻击的)IE版本时,会出现问题

此外,如果您使用IE开发者工具栏,请检查它是否未禁用Cookie


对我来说,你的代码在IE6、FF3.0.11和Opera9.64中运行没有问题

我提供了一个小样本。来测试你是否仍然可以重现错误

jquery.js
-->


jquery.cookie.js
-->

我记得在同一个窗口上运行多个(->被黑客攻击的)IE版本时会出现问题

此外,如果您使用IE开发者工具栏,请检查它是否未禁用Cookie


对我来说,你的代码在IE6、FF3.0.11和Opera9.64中运行没有问题

我提供了一个小样本。来测试你是否仍然可以重现错误

jquery.js
-->


jquery.cookie.js
-->

您不是两次调用switchButton代码吗?在click处理程序中调用一次,在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);
}

您不是在调用SwitchButtonCode两次吗?一次在click处理程序中,第二次在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);
}
此外,如果您同意Vat模式为“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();
}

您不是调用了两次switchButton代码吗?一次在click处理程序中,第二次在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);
}

您不是在调用SwitchButtonCode两次吗?一次在click处理程序中,第二次在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);
}
此外,如果您同意Vat模式为“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();
}

只是一件小事。这可能会影响一些事情。虽然,你说你在本地IE6中测试过,所以这可能不是问题,但值得了解。

只是一件小事。这可能会影响一些事情。虽然,你说你在本地IE6中测试过,所以这可能不是问题,但值得了解。

\t不是一个链接,只是一个段落。Return false也没有帮助。我使用的是IETester。它运行JavaScript非常好。我以前在本机运行IE6时检查过它,巴哈维奥也是一样的。#toggleVAT不是链接,只是一个段落。Return false也没有帮助。我使用的是IETester。它运行JavaScript非常好。我在本机上检查过它ely以前运行过IE6,bahaviour也一样。你的第一件作品很管用,但不是在IE6中。它非常超现实,我必须开始开箱思考。我刚刚安装了另一个IE测试仪(tredosoft的multipleIEs)问题依然存在。我尝试过不使用样式表,我尝试过剥离所有其他JavaScript。我尝试过硬编码onlclick=“switchPrices()”。没有区别。只是一个猜测,你能检查一下你是否为你的页面设置了正确的DOCTYPE吗?我想可能是IE的怪癖模式导致了错误。没有XML头的XHTML过渡,我们肯定不是怪癖模式。box模型也是标准兼容的,所以绝对不是怪癖模式。它实际上是XHTML 1.0严格的。没有真的,我已经没有想法了,这将是你的第一件作品,但不是在IE6中。这是非常超现实的,我必须开始开箱思考。我刚刚安装了另一个IE测试仪(tredosoft的multipleIEs),问题仍然存在。我尝试过不使用样式表,我尝试过剥离所有其他JavaScript。我尝试过硬编码onclick=“价格()"。没有区别。只是一个猜测,你能检查一下你是否为你的页面设置了正确的DOCTYPE吗?我想可能是IE的怪癖模式导致了错误。没有XML头的XHTML过渡,我们肯定不是怪癖模式。box模型也是标准兼容的,所以绝对不是怪癖模式。它实际上是XHTML 1.0严格的。没有实际上,我已经没有想法了,这可能是问题的根源,我在本机IE6上测试的原始实现没有cookie。这是后来添加的。或者可能是我修复的其他错误导致它损坏。这可能是问题的根源,我在本机IE6 d上测试的原始实现我没有Cookie。这是后来添加的。或者它可能有我修复的其他错误,导致它损坏。