【问题标题】:Reveal a unique selector inside jQuery each()在 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,但是能够使用类、标签或其他非唯一选择器会更加灵活!

【问题讨论】:

标签: jquery ajax jquery-selectors each


【解决方案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);
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-06
    • 2021-08-28
    • 1970-01-01
    • 2020-07-29
    • 2011-08-08
    • 2011-06-13
    • 2021-11-19
    • 1970-01-01
    相关资源
    最近更新 更多