几周前我编写了我的示例网站。它工作得很好,但现在不行了。它从昨天开始,在 Chrome 更新自身之后(或者看起来如此)。
我在控制台中的错误是:
Uncaught TypeError: Cannot read property 'msie' of undefined
Uncaught TypeError: Object [object Object] has no method 'rating'
它们都是由我一直使用的 jQuery 插件(jQuery Form、jQuery StarRating、jQuery UI 等)引起的。另外,当我悬停一个show
与 jQueryUI 一起使用的元素时,我得到了
Uncaught TypeError: Property '#<Object>' of object #<Object> is not a function
我的JS代码如下:
(function($){})(window.jQuery);
$(document).ready(function() {
/* T.O.C.
1. Top
1.0 | Header
1.1 | Main Menu
1.2 | Placeholders
2. Content
2.1 | Left
2.1.1 | Box covers
3. Sidebar
3.1 | Rates
*/
});
/* 1.0 | Top */
// 1.1 | Main Menu
function searchInput() {
var totalWidth = 0;
var n = parseInt(0);
$('nav#mainMenu ul li:not(.search)').each(function() {
totalWidth += parseInt($(this).outerWidth(true));
});
var inp = 919 - totalWidth;
$('nav#mainMenu ul li.search form input').width(inp);
};
function slideMenu() {
$('nav#mainMenu ul li:not(:first), nav#mainMenu ul li ul:not(li a)').each(function() {
$(this).mouseenter(function() {
$(this).children('a').addClass('active');
var left = $(this).outerWidth(true),
width = 0;
if($(this).hasClass('help')) { // IF HELP
$(this).prevAll('li').each(function() {
width += $(this).outerWidth(true);
});
} else { // ELSE
$(this).nextAll('li').each(function() {
width += $(this).outerWidth(true);
});
}
var width = width + 1;
if($(this).hasClass('help')) {
$(this).children('ul').css({ 'right':left, 'width':width });
$(this).children('ul').show('slide', { direction: 'right' }, 250);
} else {
$(this).children('ul').css({ 'left':left, 'width':width });
$(this).children('ul').show('slide', { direction: 'left' }, 250);
}
});
$(this).mouseleave(function() {
if($(this).hasClass('help')) {
$(this).children('ul').hide('slide', { direction: 'right' }, 250, function() {
$(this).parent('li').children('a').removeClass('active');
});
} else {
$(this).children('ul').hide('slide', { direction: 'left' }, 250, function() {
$(this).parent('li').children('a').removeClass('active');
});
}
});
});
};
slideMenu();
searchInput();
/* 1.2 | Placeholder */
function Placeholders() {
if(!Modernizr.input.placeholder){
$("input").each(
function(){
if($(this).val()=="" && $(this).attr("placeholder")!=""){
$(this).val($(this).attr("placeholder"));
$(this).focus(function(){
if($(this).val()==$(this).attr("placeholder")) $(this).val("");
});
$(this).blur(function(){
if($(this).val()=="") $(this).val($(this).attr("placeholder"));
});
}
});
}
}
Placeholders();
/* 2. Content */
// 2.2.1 | Box covers
function BoxCovers() {
$('ul.boxlist li').mouseenter(function() {
$(this).children('div').stop().fadeIn('fast');
});
$('ul.boxlist li').mouseleave(function() {
$(this).children('div').stop().fadeOut('fast');
});
$('.boxlist .rate').rating();
$('.boxlist form.starRated a').attr('title','');
}
BoxCovers();
function Detailed() {
$('ul.detailed .rate').rating();
$('ul.detailed form.starRated a').attr('title','');
$('ul.detailed li').each(function() {
$(this).removeClass('grid_4').addClass('grid_14 clearfix');
var img = $(this).children('img').attr('src'),
img = img.replace('.jpg','-m.jpg');
$(this).children('img').attr('src',img).addClass('grid_1');
$(this).children('div').addClass('grid_9');
$(this).mouseenter(function() {
$(this).children('div').children('p.own').stop().fadeIn();
});
$(this).mouseleave(function() {
$(this).children('div').children('p.own').stop().fadeOut();
});
});
};
Detailed();
/* 3. Sidebar */
// 3.1. Rates
function sideRates() {
$('section#grades div ul li').each(function() {
var percent = $(this).children('b').text(),
percent = percent.replace('%',''),
percent = (percent/100),
totalSpamWidth = $(this).children('span').width(),
newWidth = totalSpamWidth * percent;
$(this).children('span').width(newWidth);
});
};
sideRates();