Javascript 获取HTML元素的索引但过滤掉clearfix div?
我正在使用CMS,为了保存我的文本,我需要知道我正在使用的元素的索引 我有以下(剥离的)HTML片段:Javascript 获取HTML元素的索引但过滤掉clearfix div?,javascript,jquery,html,Javascript,Jquery,Html,我正在使用CMS,为了保存我的文本,我需要知道我正在使用的元素的索引 我有以下(剥离的)HTML片段: <div class="row"> <article class="col-md-4 col-sm-4 project" > <div class="inphos-hover-color-element5715e6986d561" > <div> <div cl
<div class="row">
<article class="col-md-4 col-sm-4 project" >
<div class="inphos-hover-color-element5715e6986d561" >
<div>
<div class="content dummy-content" data-content="title">Vul hier uw titel in</div>
<div class="content" data-content="text">
<p>sdfas</p>
</div>
</div>
</div>
</article>
<article class="col-md-4 col-sm-4 project">
<div class="inphos-hover-color-element5715e6986d561" >
<div>
<div class="content dummy-content" data-content="title">Vul hier uw titel in</div>
<div class="content" contenteditable="true" data-content="text">
<p>asfdsad</p>
</div>
</div>
</div>
</article>
<article class="col-md-4 col-sm-4 project">
<div class="inphos-hover-color-element5715e6986d561">
<div>
<div class="content dummy-content" contenteditable="true" data-content="title">Vul hier uw titel in</div>
<div class="content" style="line-height:21px;" contenteditable="true" data-content="text">
<p>asdfsd</p>
</div>
</div>
</div>
</article>
<!-- This one messes up the count -->
<div class="clearfix"></div>
<article class="col-md-4 col-sm-4 project" >
<div class="inphos-hover-color-element5715e6986d561">
<div >
<div class="content dummy-content" contenteditable="true" data-content="title">Vul hier uw titel in</div>
<div class="content dummy-content" contenteditable="true" data-content="text">Dummy text</div>
</div>
</div>
</article>
</div>
然后我转到.project
最近的元素,计算索引:
that.closest('.project').index();
但这当然也包括div.clearfix
。
我试图通过向索引函数添加选择器来解决此问题:
that.closest('.project').index('.project');
但这仍然给出了错误的索引
有什么办法可以得到正确的计数吗
编辑
我没有给你足够的信息。上面的HTML示例只是页面中的一个元素。
可以有多个类似上面的元素,由容器、div等分割
这里的情况是,当您在index
-函数中输入选择器时,它会在整个文档中搜索该选择器,然后返回该集合的索引
我试图通过在索引函数中插入一组节点来解决这个问题:
var project = that.closest('.project');
project.index(project.siblings('.project'));
但这只返回-1
我创建了一个变通方法,但它不是我要搜索的:
index = project.index() - project.prevAll(':not(.project)').length;
如果有人在这里有一个正确的使用索引的方法,请让我知道 我的建议是在每个文章标签中放置一个属性(即索引)。比如:
// at the bottom of the page
// or inside $(document).ready()
var articles=$("article");
for (var i=0; i<articles.length; i++)
$(articles[i]).attr("index",i);
/* result:
<article index="0" class="....
<article index="1" class="....
*/
你觉得怎么样?这里有一个小演示:
您可以在
文章中调用数组的索引。项目
元素并搜索您的特定元素:
$(文档)。单击(函数(e){
//获取目标元素
var target=$(e.target).closest('.project')[0];
//在所有article.project元素的列表中调用indexOf,搜索您的元素
var index=Array.prototype.indexOf.call($('article.project'),target);
$('#log').html('点击'+索引);
})
#log{位置:固定;顶部:0;z索引:99;背景色:rgba(0,0,0,4);颜色:白色;}
你在哪里
SDFA
你在哪里
阿斯夫德萨德
你在哪里
asdfsd
你在哪里
虚拟文本
var$p=that.closest(“.project”);var idx=$p.closest('.row').index($p)
?@Abayob是否要获取行内特定项目的索引?是的,我需要行下集合中article.project的索引。这是强制性的!我只需要计算article.project元素之间的数量,它们之间的所有其他元素都只是为了修复/设置样式我喜欢您的解决方案,但这是一种防止使用函数index()的变通方法。
// at the bottom of the page
// or inside $(document).ready()
var articles=$("article");
for (var i=0; i<articles.length; i++)
$(articles[i]).attr("index",i);
/* result:
<article index="0" class="....
<article index="1" class="....
*/
// that = the current edited div
var target_article=$(that).parent("article");
var target_index=$(target_article).attr("index");