在jQuery中显示一个唯一的选择器each()

时间:2014-07-18 20:23:45

标签: jquery ajax jquery-selectors each

我如何在每个循环的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,但是能够使用类,标签或其他非唯一选择器会更灵活!

1 个答案:

答案 0 :(得分:0)

如果我正确理解了您的问题,您可以在循环使用.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);
});