jQueryのIE6のクリックの問題
-
22-08-2019 - |
質問
クリックは、次の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オン()を1回実行されますが、私は#toggleVATをクリックしたときには、コードを実行しません。私は、最新縮小さjQueryのを使用しています。 #toggleVATはちょうど段落です。私はIETester http://my-debugbar.com/wiki/IETester/HomePage。私はネイティブの前にIE6を実行する上で、それをチェックしbahaviourは同じでした。私の問題は、スタイルシートなしに持続するとしても可能CSSの問題を出してきましたrulledます。
解決
他のヒント
リンク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);
}
あなたの代わりに「EX」の「EXC」としてバットモードとokieしている場合は、また、あなたはさらにコードを単純化することができます。
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の開発者ツールバーのチェックを使用している場合。
<時間>私にとってはあなたのコードは、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する