我有一个非常奇怪的问题。 我使用 jQuery 1.7.1 和 UI 1.8.17 作为 slider 。
它在 Chrome、Safari 和 FF 上的工作方式就像 charm(只要你不使用 firebug...)。 到目前为止一切顺利,但是!
它不适用于 IE(已使用 IE 8 和 9 进行测试)。然而,只要你打开 IE 开发者工具, slider 就可以工作了!
我完全不知道如何解决这个问题......所以希望你们中的任何人都可以帮助我!
我的 JS 代码:
$(document).ready(function(){
$("#content-slider").slider({
animate: true,
value: 0,
slide: handleSliderSlide,
change:handleSliderChange
});
var c = parseInt($(".content-item").length);
var isiPad = navigator.userAgent.match(/iPad/i) != null;
//var w = eval((376 * c) + 1);
if ($.browser.msie && parseInt($.browser.version)==9 || isiPad) {
var w = parseInt(eval(376.5 * c));
}
else {
var w = eval(376.5 * c);
}
var s = $(window).width();
$("#content-scroll").attr('style', 'width:'+s+'px;');
$("#content-holder").attr('style','width:'+w+'px;');
if(isiPad){
$("#content-slider").attr('style', 'width:'+eval(s - 49)+'px;margin-left:3px;');
}
else if($.browser.msie) {
switch (parseInt($.browser.version)) {
case 9:
$("#content-slider").attr('style', 'width:'+eval(s - 49)+'px;margin-left:2px;');
break;
case 8:
$("#content-slider").attr('style', 'width:'+eval(s - 49)+'px;margin-left:2px;');
break;
case 7:
$("#content-slider").attr('style', 'width:'+eval(s - 49)+'px;margin-left:2px;');
break;
}
}
else if ($.browser.safari) {
$("#content-slider").attr('style', 'width:'+eval(s - 48)+'px;margin-left:3px;');
}
else{
$("#content-slider").attr('style', 'width:'+eval(s - 49)+'px;margin-left:2px;');
//$("#content-slider").attr('style', 'width:'+eval(s - 49)+'px;margin-left:2px;');
}
$("a.fancybox").fancybox();
$('#lnkproject').addClass('current');
$('#lnkproject').click(function(){
console.log('lnkproject.click');
$('#lnkproject').addClass('current');
$('#lnkskills').removeClass('current');
$('#lnkcontact').removeClass('current');
$("#content-slider").slider({
animate: true,
value: 0,
slide: handleSliderSlide,
change: handleSliderChange
});
});
$('#lnkskills a').click(function(){
console.log('lnkskills.click');
$('#lnkproject').removeClass('current');
$('#lnkcontact').removeClass('current');
$('#lnkskills').addClass('current');
scval = parseInt(($("#content-holder").width() - $("#content-scroll").width()) / 100);
$("#content-slider").slider({
animate: true,
value: eval(scval + 1),
slide: handleSliderSlide,
change: handleSliderChange
});
});
$('#lnkcontact').click(function(){
console.log('lnkcontact.click');
$('#lnkproject').removeClass('current');
$('#lnkskills').removeClass('current');
$('#lnkcontact').addClass('current');
$("#content-slider").slider({
animate: true,
value: 100,
slide: handleSliderSlide,
change: handleSliderChange
});
});
$("#fp_prev_thumb").click(function() {
console.log('fp_prev_thumb.click');
var slideval = parseInt($('#content-slider').slider("option", "value"));
$("#content-slider").slider({
animate: true,
value: slideval - 10,
slide: handleSliderSlide,
change: handleSliderChange
});
});
$("#fp_next_thumb").click(function() {
console.log('fp_next_thumb.click');
var slideval = parseInt($('#content-slider').slider("value"));
$("#content-slider").slider({
animate: true,
value: (slideval + 10),
slide: handleSliderSlide,
change: handleSliderChange
});
});
function handleSliderChange(e, ui){
console.log('handleSliderChange');
var maxScroll = $("#content-holder").width() - $("#content-scroll").width();
$("#content-scroll").animate({scrollLeft: ui.value * (maxScroll / 100) }, 200);
}
function handleSliderSlide(e, ui)
{
console.log('handleSliderSlide');
var maxScroll = $("#content-holder").width() - $("#content-scroll").width();
$("#content-scroll").animate({scrollLeft: ui.value * (maxScroll / 100) }, 20);
}});
最佳答案
摆脱 console.log 调用。当开发工具未打开时,IE 会被它们阻塞。
关于jquery-ui - jQuery UI slider - 如果开发人员工具未激活,则无法在 IE 上工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9365938/