Jquery 列表顺序的逻辑问题
我想我错过了一些逻辑上的见解。这看起来很容易,但我就是看不出来 我有一个列表,想看看在单击的项目之前和/或之后是否有列表项目。这是密码Jquery 列表顺序的逻辑问题,jquery,Jquery,我想我错过了一些逻辑上的见解。这看起来很容易,但我就是看不出来 我有一个列表,想看看在单击的项目之前和/或之后是否有列表项目。这是密码 <script> [..] $("a").click(function(event){ var parentEl = $(this).closest("ul"); var currPosition = $(this).parent().prevAll().length + 1; var totalItems = $("#"+$(parentE
<script>
[..]
$("a").click(function(event){
var parentEl = $(this).closest("ul");
var currPosition = $(this).parent().prevAll().length + 1;
var totalItems = $("#"+$(parentEl).attr("id")+" li").length;
if(currPosition == totalItems){ alert("Previous and Next"); }
if(currPosition <= totalItems){ alert("Next"); }
if(currPosition >= totalItems){ alert("Previous"); }
[..]
</script>
[..]
<ul id="listOne">
<li><a>Text 1</a></li>
<li><a>Text 2</a></li>
<li><a>Text 3</a></li>
<li><a>Text 4</a></li>
</ul>
[..]
$(“a”)。单击(函数(事件){
var parentEl=$(此);
var currPosition=$(this.parent().prevAll().length+1;
var totalItems=$(“#”+$(parentEl).attr(“id”)+“li”).length;
如果(currPosition==totalItems){alert(“Previous and Next”);}
如果(currPosition=totalItems){alert(“Previous”);}
[..]
[..]
- 文本1
- 文本2
- 文本3
- 文本4
上面的代码几乎只在我点击最后一个项目时起作用,所有内容都会得到提醒。。
我只想知道单击的列表项上是否有上一个、下一个或两个观点您可以使用如下方式进行检查:
$("a").click(function(event){
var pCount = $(this).closest('li').prevAll().length, //how many previous
nCount = $(this).closest('li').nextAll().length; //how many after
if(pCount > 0 && nCount > 0){ alert("Previous and Next"); }
else if(nCount > 0){ alert("Next"); }
else if(pCount > 0){ alert("Previous"); }
});
if (li.is(":first-child")) {
// first
} else if (li.is(":last-child")) {
// last
} else {
// in the middle
}
,当然,您可以将其缩短很多,但为了说明计数的来源,此方法不仅可以告诉您是否存在类似或将要出现的先前/后续元素,而且还可以告诉您有多少元素,如果这很重要的话。使您的生活变得更轻松,并可用于查找某事物的当前位置
$("a").click(function() {
var li = $(this).closest("li");
var items = li.parent().children();
var currPosition = items.index(li);
var totalItems = items.length();
if (currPosition == 0) {
// first
} else if (currPosition == totalItems.length - 1) {
// last
} else {
// middle
}
});
或者,您可以执行如下测试:
$("a").click(function(event){
var pCount = $(this).closest('li').prevAll().length, //how many previous
nCount = $(this).closest('li').nextAll().length; //how many after
if(pCount > 0 && nCount > 0){ alert("Previous and Next"); }
else if(nCount > 0){ alert("Next"); }
else if(pCount > 0){ alert("Previous"); }
});
if (li.is(":first-child")) {
// first
} else if (li.is(":last-child")) {
// last
} else {
// in the middle
}
快速修复:
if(currPosition == totalItems){
alert("Previous");
} else if(currPosition == 1){
alert("Next");
} else {
alert("Previous and Next");
}
只需检查其项目是否在父li之前或之后
$("a").click(function(){
var itemsBefore = ($(this).parent().prev().length>0)
var itemsAfter = ($(this).parent().next().length>0)
if(itemsBefore && itemsAfter) alert("Previous and next");
else if(itemsBefore) alert("Previous");
else alert("Next");
});
在这里工作-->也可以做
li.index()
(假设jQuery 1.4或更高版本)。非常简单!我就知道!谢谢!