在 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() 只显示最后一个或第一个值

在 jQuery.each 中附加元素时出现错误

JQuery中$.each 和$(selector).each()的区别详解

如何在 jQuery / javascript 中使用 each() 进行迭代或循环

jquery的$().each,$.each的区别

使用 jQuery each() 函数返回一个值