gpt4 book ai didi

jquery 使用选择器查找元素的索引

转载 作者:行者123 更新时间:2023-12-01 04:49:24 25 4
gpt4 key购买 nike

我正在尝试使用 jQuery 的 .index() 函数,我可以弄清楚它是如何工作的。结果并不是我所期望的。这是我为什么不明白的一个小例子:

HTML:

<div id="gallery">
<div class="gallery-item">item 1</div>
<div class="gallery-item active">item 2</div>
<div class="clearfix visible-lg"></div>
<div class="gallery-item">item 3</div>
<div class="gallery-item">item 4</div>
</div>

<div id="buttons">
<button id="next">next</button>
</div>
<span id="console">
</span>

JS:

    jQuery( document ).ready(function( $ ) {

$("#buttons > #next").click(function (){
var items = $(".gallery-item");

var index = items.find(".active").index();
$("#console").append("index : " + index + "<br />");

var indexWithSelector = items.index(".active");
$("#console").append("index with selector : " + indexWithSelector + "<br />");

var prevAll = items.prevAll(".gallery-item").size();
$("#console").append("prevall : " + prevAll + "<br />");

$.each(items, function(index, val) {
$("#console").append("<br />" + val.className);
});
});

});

我希望所有结果都相同:1 因为事件元素是从零开始的列表中的第二个。但我明白了:

index : -1
index with selector : -1
prevall : 3

gallery-item
gallery-item active
gallery-item
gallery-item
为什么?难道我做错了什么?

这是 CodePen 上的:http://codepen.io/anon/pen/meiBA

更新:

我尝试直接查找事件元素并使用索引来查找它的位置并且它有效。我试过这个:

var active = $(".gallery-item.active");
var index = items.index(active);
//index == 1

最佳答案

我已经在 jsfiddle 中测试了您的代码。我发现您得到 -1,因为您尝试查找的元素索引在该上下文中不存在:

 var items = $(".gallery-item");        
var index = items.find(".active").index();

这里 items.find 只会返回空的 jquery 对象。您正在尝试在图库项目的子项目中查找事件类。但是事件类与其他画廊项目处于同一级别。因此代码应该是像这样:

 var index = items.filter(".active").index();

这就是您得到 -1 的原因。由于没有元素,因此索引返回为 -1。

index : -1

现在我们来谈谈这个:

index with selector : -1

这个-1背后的原因是以下代码:

var indexWithSelector = items.index(".active");

在这里,您在 .active 类的集合中找到 $(".gallery-item") 。这是没有意义的。因为 .active 是 gallery-item 的一部分。

搜索应该是这样的:

 var indexWithSelector = items.filter(".active").index(".gallery-item");

现在让我们检查以下代码:

var prevAll = items.prevAll(".gallery-item").size();

在这里,您试图获取所有先前项目的大小。其中项目的大小为 4,即 $(".gallery-item") ,它返回您的大小 4-1 = 3 正确的是。

如果您试图获取 active 类的上一个 gallery-item ,那么代码应该是:

var prevAll = items.filter(".active").prevAll(".gallery-item").size();

所以正确的输出将如下所示:

index : 1 
index with selector : 1
prevall : 1

最后但并非最不重要的是这里是 jsfiddle。我也评论了你的代码,以便你可以评论我的代码并检查效果:

DEMO : JS FIDDLE

关于jquery 使用选择器查找元素的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23196596/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com