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 ()가 한 번 실행되지만 #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에서 문제없이 작동합니다.
작은 샘플을 제공했습니다. 여전히 오류를 재현 할 수 있는지 테스트합니다.
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