主要自己總是不記得
結構如下,涉及jq中獲取當前元素是父元素的的第幾個元素,jq中獲取某類在同類元素中占第幾,each方法
<div class="parent"> <div class="c"> c <div class="cc">cc</div> </div> <div class="c"> c <div class="cc">cc</div> </div> <div class="c myc"> c <div class="cc mycc">cc</div> </div> <div class="c"> c <div class="cc">cc</div> </div> </div>
1、jq中獲取當前元素是父元素的的第幾個元素
如上面的dom結構,我們知道,所有類c的元素都是類parent的子元素,所以我們可以直接使用index來獲取類myc在父元素中的順序(從0開始),代碼如下:
$('.myc').index();
2、jq中獲取某類在同類元素中占第幾
而cc類則不同,你想要獲取的順序可能不是相對父元素的位置,因為這幾個cc類元素屬於不用的父元素c類,如果你使用$('.mycc').index(),無例外,結果是0而不是想要得到的2,我們的獲取方式還是使用index,但是不大一樣。
var myccIndex = $('.mycc').index('.cc');
3、each()方法
我知道each()方法不錯,但是總是沒有使用它的意識……它是自帶index參數的
$('.c').each(function(index,element){ $(this).append('---------------------'+index); });
4、js中獲取當前元素處於的順序
據我了解,沒有簡便的方法,你可以自己留下標識,然后遍歷確定。
5、jq中獲取第N個元素和js中獲取第N個元素
老生常談了,留點記錄:
var ele = $('.c').eq(2).find('.cc').eq(0);//jq中獲取c類的第2個元素的第0個cc類子元素 var elem = document.getElementsByClassName('c')[2].getElementsByClassName('cc')[0];//js中獲取c類的第2個元素的第0個cc類子元素
完整代碼:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <style> .cc{ margin-left:20px; } </style> </head> <body> <div class="parent"> <div class="c"> c <div class="cc">cc</div> </div> <div class="c"> c <div class="cc">cc</div> </div> <div class="c myc"> c <div class="cc mycc">cc</div> </div> <div class="c"> c <div class="cc">cc</div> </div> </div> <script src="js/jquery-3.3.1.min.js"></script> <script> window.onload=function(){ $('.c').each(function(index,element){ $(this).append('---------------------'+index); }); var mycIndex = $('.myc').index(); $('.myc').append('--我是myc,從0算起,我在父元素parent中排'+mycIndex); var myccIndex = $('.mycc').index(); $('.mycc').append('---我是mycc,從0算起,我在父元素myc中排'+myccIndex+'\n'); var myccIndex = $('.mycc').index('.cc'); $('.mycc').append('---------從0算起,我在類cc中排'+myccIndex); } </script> </body> </html>