最近,我根据nettuts教程创建了一个lavalamp插件,它在我的其他网站上运行良好。我想在我的其他网站上重复使用它,但是我收到了这个错误:
未捕获的TypeError:无法读取未定义的属性“left”
我是jQuery的初学者,我无法真正找到解决方法。
代码:
(function($){
$.fn.lavylamp = function(options)
{
options = $.extend({
overlay: 20,
speend: 300,
reset: 1500,
color: '#78C2FF',
easing: 'easeOutExpo',
}, options);
return this.each(function(){
var nav = $(this),
currentPageItem = $('#active', nav),
cursor,
reset;
$('<li id="blob"></li>').css({
width: currentPageItem.outerWidth(),
left: currentPageItem.position().left,
top: currentPageItem.position().top,
backgroundColor: options.color,
}).appendTo('#nav');
blob = $('#blob', nav);
$('li', nav).hover(function(){
blob.animate(
{
left: $(this).position().left,
width: $(this).width()
},
{
duration: options.speed,
easing: options.spped,
queue: false
}
);
}, function(){
clearTimeout(reset);
blob.stop().animate({
left: $(this).position().left,
width: $(this).width()
}, options.speed);
reset = setTimeout(function(){
blob.stop().animate({
width: $(this).outerWidth(),
left: $(this).position().left,
}, options.speed);
}, options.reset);
});
});
}
})(jQuery);
该错误适用于此部分:
$('<li id="blob"></li>').css({
width: currentPageItem.outerWidth(),
left: currentPageItem.position().left,
top: currentPageItem.position().top,
backgroundColor: options.color,
}).appendTo('#nav');
有人可以给我一个提示吗?
修改
HTML
<ul id="nav" class="unstyled inline">
<li><a href="">Start up Business</a></li>
<li><a href="industries.php=2">Entrepreneurial & Familit Owned Business</a></li>
<li><a href="">Hight Net Worth Individuals</a></li>
<li><a href="careers.php=1">Professionlas</a></li>
<li><a href="industries.php=8">Real Estate Professionlas</a></li>
<li><a href="industries.php=7">Not For Profit</a></li>
</ul>
答案 0 :(得分:0)
只是一个猜测,但我怀疑:
currentPageItem = $('#active', nav),
应该是:
currentPageItem = $('.active', nav),
#
用于按ID选择,.
用于按类选择。由于ID是唯一的,因此在每个元素中搜索不同的active
ID没有意义,这就是用于的类。
答案 1 :(得分:0)
可能是,你想选择一个元素,而不是两个?
currentPageItem = $('#active', nav)
选择所有id =“active”和nav也。