我使用jQuery来选择以某个前缀开头的所有锚标签,然后为每个标签调用一个函数:
$('a[id^="lblMyLabel"]').each(function() {
doSomething(this.id);
});
在doSomething内部我进行ajax调用以获取一些数据。我假设jQuery会从上到下扫描页面,抓住所有以lblMyLabel开头的锚标签并按顺序对它们进行操作,但顺序似乎是随机的。有谁知道这种选择是如何进行的?
编辑:所以我同意你们从上到下选择项目是正确的。但是如果我在响应ajax调用的WebMethod上坚持一个断点,那么就不会按顺序获取ID。这个订单是如何确定的?
答案 0 :(得分:4)
在这种情况下,在现代浏览器中,jQuery使用
document.querySelectorAll('a[id^="lblMyLabel"]')
允许浏览器完成工作。
除了.prev之类的方法之外,jquery按照它们在文档中出现的顺序返回元素。
https://developer.mozilla.org/en-US/docs/DOM/Document.querySelectorAll
答案 1 :(得分:2)
在这样创建的jQuery对象中的DOM元素的顺序(以及.each()
被调用的顺序)在文档中从上到下是顺序的,但如果你正在做一堆ajax一次调用,这些ajax调用的响应不能以任何特定的顺序保证,因为这取决于服务器上每个响应的处理时间。
如果你想按顺序处理ajax响应,那么你可能需要为它们中的每一个提供一些序列标识符,将它们全部排队,并且只有在你已经处理过它之后才处理项目N.最简单的方法是根据原始序列号将所有结果排入队列,然后在完成所有结果后按顺序处理。有更复杂的方法可以在之前的所有方法到达并处理完毕后立即处理。
答案 2 :(得分:0)
在选择CSS ID时需要使用#字符,如下例所示:
var messagePara = $('#message');