我如何在每个循环的jQuery迭代中获得唯一引用当前目标DOM元素(即this
)的选择器?所以说选择器是#abc, .xyz
,源是:
<body>
<div id="abc">1</div>
<div class="xyz">2</div>
<div class="xyz">3</div>
<div class="xyz">4</div>
</body>
理想情况下,我正在寻找这样的事情:
$('#abc, .xyz').each(function() {
/*
iteration1 = '#abc';
iteration2 = '.xyz:eq(0)';
iteration3 = '.xyz:eq(1)';
iteration4 = '.xyz:eq(2)';
*/
});
我知道.selector属性已被移除,但实际上它甚至没有帮助,我在一个特定的选择器之后只能匹配&#34;这个&#34;每个()的迭代。
我试图通过Ajax加载新页面的部分内容,然后只用加载的数据替换当前页面的某些部分。我喜欢它,如果我可以完全参数化当前页面上的ajax替换(可能在很多不同的地方)。因此,我想要一种方法来循环加载数据中的多个可能的匹配,然后替换当前页面上的那些特定部分。
所以我可以通过ajax加载的数据遍历选择器,但是我没有选择器将每个迭代的数据都定位到当前页面上。
回溯,我可以依赖ID,用逗号分割()选择器字符串,并循环这些ID,但是能够使用类,标签或其他非唯一选择器会更灵活!
答案 0 :(得分:0)
如果我正确理解了您的问题,您可以在循环使用.each
函数时使用jQuery扩展(如列出的here)。
$(function () {
var selectors = [];
$('#abc, .xyz').each(function () {
var uniqueSelectorForThis = $(this).getPath();
selectors.push(uniqueSelectorForThis);
});
// Will log this based on your HTML:
// ["html>body>div", "html>body>div:nth-child(2)", "html>body>div:nth-child(3)", "html>body>div:nth-child(4)"]
console.log(selectors);
});