在导航中对活动项目背景进行动画处理失败
Animating the active item background in a nav fails
我有以下标记:
<ul>
<li><a href="#">first</a></li>
<li><a href="#">largerWord</a></li>
<li class="active"><a href="#">third</a></li>
</ul>
这些项目具有透明背景,但活动类除外,该类具有蓝色。
这个想法是,当用户单击(不是活动)而不是切换背景时,我想移动背景,您可以在此处看到几乎完成的结果,但它在第一次单击时失败(有关错误日志,请参阅问题末尾):
http://jsfiddle.net/FeV55/26/
我所做的是动态创建一个较低的 z 索引<li>
并根据(单击的)项目偏移量对左侧进行动画处理,并根据(单击的)项目宽度对宽度进行动画处理
jquery代码:
$(document).ready(function(){
$('ul li a').not('.active').click(function(){
/*caching*/
var activa = $('li.active');
var bg = $('li.back');;
var list = $(this).closest('ul');
/*when it's first click the background item doesnt exist*/
if(bg.length>0 == false){
list.append('<li class="back"></li>');
}
var width = $(this).outerWidth(true);
var leftUL = list.offset().left;
var leftThis = $(this).offset().left;
var left = leftThis - leftUL;
/*Remove class to previous active*/
activa.removeClass('active');
/*Cancel background even if parent is active*/
$(this).addClass('noBg');
/*Update active class*/
$(this).parent().addClass('active');
/*Move the background to its offset*/
bg.animate({'left':left,'width':width});
/*logs*/
$('#oUl').text(leftUL);
$('#ocl').text($(this).offset().left);
$('#odf').text(left);
$('#obg').text(bg.offset().left);
});
});
但它在第一次点击时失败,火虫日志:
bg.offset() is null
[Parar en este error]
$('#obg').text(bg.offset().left);
问题是为什么? 无论如何,该项目应该在那时存在。
请务必在创建元素后选择分配给bg
的元素:
var bg = $('li.back');
if (bg.length == 0) {
list.append('<li class="back"></li>');
bg = $('li.back');
}
更好的是,将元素创建到 bg
中:
if (bg.length == 0) {
bg = $('<li class="back"></li>');
list.append(bg);
}
相关文章:
- 使用不同的超时对数组中的每个项目进行角度动画处理
- 图表.js 2,从右到左(不是自上而下)进行动画处理
- 使用 JavaScript 对 HTML5 进度条进行动画处理
- 使用 JQuery 对 Spin SVG 元素进行动画处理
- 使用 GSAP 对模糊滤镜进行动画处理
- 使用 jQuery 对窗口进行动画处理
- 如何使用jQuery对固定元素的位置进行动画处理
- jQuery 动画处理最大宽度溢出问题
- 悬停不起作用时对不透明度更改进行动画处理
- 在两个值之间插值或“补间”(但不进行动画处理)
- 尝试在画布中对形状进行动画处理时,它会显示,但不移动
- 如何在不分隔跨度字母的情况下对文本进行动画处理
- 对链接的 svg 进行动画处理不起作用;内联时工作正常
- 防止对某些事件进行进一步的动画处理
- Snap.svg:在动画中使用相同的种类对多个零件进行动画处理
- 如何使用if语句jquery对数字进行动画处理
- 按随机顺序对元素进行动画处理
- 元素在使用 jQuery 对相对包装宽度进行动画处理时消失
- brush.event 在对画笔事件进行动画处理时会做什么
- 使用ScrollMagic按顺序对多个场景进行动画处理