在 jQuery each() 中显示一个唯一的选择器
Posted
技术标签:
【中文标题】在 jQuery each() 中显示一个唯一的选择器【英文标题】:Reveal a unique selector inside jQuery each() 【发布时间】:2014-09-10 01:49:44 【问题描述】:如何获得一个选择器,该选择器将在 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 属性已被删除,但实际上这甚至没有帮助,我正在寻找一个仅匹配 each() 的“this”迭代的特定选择器。
为什么? ...你可能会问
我正在尝试通过 Ajax 加载新页面的部分内容,然后只用加载的数据替换当前页面的某些部分。如果我可以完全参数化要在当前页面上替换的内容(可能在很多不同的地方),我会很高兴。因此,我想要一种方法来循环加载数据中的多个可能匹配项,然后替换当前页面上的那些特定部分。
所以我可以 each() 通过 ajax 加载的数据在选择器上循环,但是我没有选择器来将每次迭代的数据定位到当前页面。
回溯,我可以依赖 ID,用逗号 split() 选择器字符串,然后循环遍历这些 ID,但是能够使用类、标签或其他非唯一选择器会更加灵活!
【问题讨论】:
重复? ***.com/questions/2420970/… 【参考方案1】:如果我正确理解您的问题,您可以在循环通过 .each
函数时使用 jQuery 扩展(如列出的 here)。
JSFiddle Demo
$(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);
);
【讨论】:
以上是关于在 jQuery each() 中显示一个唯一的选择器的主要内容,如果未能解决你的问题,请参考以下文章
JQuery中$.each 和$(selector).each()的区别详解