Jquery 使用第n个子项根据元素位置更改变量值
我需要能够使用Jquery 使用第n个子项根据元素位置更改变量值,jquery,absolute,dynamic-variables,Jquery,Absolute,Dynamic Variables,我需要能够使用.index()创建一个变量来标识li的位置,然后根据每个li的变量号为其赋值 这听起来可能有点混乱,所以我写了一篇文章来更好地解释这一切。共有3个lis,当我单击一个按钮/链接时,我需要使用position:absolute将它们根据其:第n个子位置展开。然而,目前我遇到的问题是变量(itemNumber)是相同的,并且不会对每个li进行更改 这是我的密码: <ul> <li>Lorem Ipsum 1</li> <li&
.index()
创建一个变量来标识li
的位置,然后根据每个li
的变量号为其赋值
这听起来可能有点混乱,所以我写了一篇文章来更好地解释这一切。共有3个li
s,当我单击一个按钮/链接时,我需要使用position:absolute
将它们根据其:第n个子
位置展开。然而,目前我遇到的问题是变量(itemNumber
)是相同的,并且不会对每个li
进行更改
这是我的密码:
<ul>
<li>Lorem Ipsum 1</li>
<li>Lorem Ipsum 2</li>
<li>Lorem Ipsum 3</li>
</ul>
<a href="#">Click me</a>
我很乐意多解释一下,因为这个想法有点让人困惑。基本前提是,我需要变量itemNumber
为每个li
进行更改,并且可以有任意数量的li
s.您可以尝试此方法-
$("ul li").each(function (index,element) {
$("ul li:nth-child(" + index + "n)").css("top", index * 30 + "px");
});
或者更好
$("ul li").each(function (index,element) {
$(this).css("top", index * 30 + "px");
});
你可以试试这个-
$("ul li").each(function (index,element) {
$("ul li:nth-child(" + index + "n)").css("top", index * 30 + "px");
});
或者更好
$("ul li").each(function (index,element) {
$(this).css("top", index * 30 + "px");
});
改用
.eq
:
var itemNumber = $("ul li").index(); // eq is 0 based index
$("ul li").each(function (i, v) {
$("ul li").eq(itemNumber).css("top", (itemNumber + 1) * 30 + "px");
});
改用
.eq
:
var itemNumber = $("ul li").index(); // eq is 0 based index
$("ul li").each(function (i, v) {
$("ul li").eq(itemNumber).css("top", (itemNumber + 1) * 30 + "px");
});
当你点击“点击我”时会发生什么?代码只设置
itemNumber
一次,所以值总是1
当你点击“点击我”时会发生什么?代码只设置itemNumber
一次,所以值总是1
这非常有效,谢谢:)我添加了(index+1),因为index()是基于0的,第一个元素现在是1。非常感谢您的帮助:)效果很好,谢谢:)我添加了(index+1),因为index()是基于0的,所以第一个元素现在是1。非常感谢您的帮助:)这不太有效,它只对第一个元素有效。不太清楚为什么,我用你的代码和它应该做什么(Mohammad的代码)更新了JSFIDLE。这不太管用,只对第一个元素管用。不太清楚为什么,我用您的代码更新了JSFIDLE,以及它应该做什么(Mohammad的代码-)。