jq设置left
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jq设置left相关的知识,希望对你有一定的参考价值。
$("ul li").first().css("left",nL);为什么设置这个left值怎么设置都不成功?
参考技术A $("ul li").first().css("left",nL+"px");追问试过,没用
追答方法一:
console.log(nL); 看一看是否获得了值
若有值,就是你的ul li 的样式中看看有没有 position:absolute; 没有添加上,保证left有效;或者float:left;
方法二:var nL = $('ul li').last().position().left;
$("ul li").first().css("left",nL+"px");
我在这一句上面alert(nL)有数值,position也有,方法二最开始就试了也不行,最关键的是我直接输一个数值进去他都不变,这是什么情况?
追答你可以百度一下,CSS样式position这个定位属性,
如果你的position设置的是absolute,那么你的css("left",12232),才会生效。
如果不是,你再设置一下,position:absolute;
如果还是不行,那我帮不了你
不是这个问题,感觉是animate()这个方法延时的问题,我把animate()的动画时间设置为0就可以了,但是只要有设置时间,就会出问题
追答你要做的效果是
点击button,第一个li和最后一个li不动,其他所有的Li都往左迁移110px;
如果是,这样写
$('.btn input').eq(0).click(function()
var len=$("ul li").length;
$('ul').children('li').each(function(i)
if(i !=0 && i!=len-1)
$(this).animate("left":$(this).position().left-110+"px");
);
);
如果有,检查一下是否被其他css 覆盖住了追问
感觉是animate()这个方法延时的问题,我把animate()的动画时间设置为0就可以了,但是只要有设置时间,就会出问题,但是想不出要怎么解决这个问题
追答出什么问题.....
追问别人告诉我说是animate()方法异步的原因,animate()执行同时后面的程序也在同时运行了,所以下面那个没效果,所以我想在最后一次循环后面添加个回调函数来执行。现在我有个问题是怎么判断$(this)执行的元素和最后一个li是同一个元素?要怎么处理呢?
追答对的 animate确实是异步的
each方法中 是有参数的,可以通过这个来实现
var length = $("ul li").length(); //获取所有li的 总数
$("ul li").each(function(i,item)
//i 表示 循环的下标,item 表示当前循环的对象(注意这里是原生js的对象)
if(i == length-1) //表示最后一个元素
)
嗯,现在的确是用下标来的,我想知道要是如果想判断$(this)和最后一个是不是同一个元素得用什么方法,网上找了半天都没找到
追答Jquery 没有像JAVA那样比较对象的方法的
大多都是使用标记来识别的
使用class 给最后一个li class="last"
if($(this).hasClass())
或者自定义属性来识别
以上是关于jq设置left的主要内容,如果未能解决你的问题,请参考以下文章