jQuery如何抓取元素?

时间:2012-12-17 18:09:05

标签: javascript jquery asp.net html

我使用jQuery来选择以某个前缀开头的所有锚标签,然后为每个标签调用一个函数:

$('a[id^="lblMyLabel"]').each(function() {
        doSomething(this.id);
});

在doSomething内部我进行ajax调用以获取一些数据。我假设jQuery会从上到下扫描页面,抓住所有以lblMyLabel开头的锚标签并按顺序对它们进行操作,但顺序似乎是随机的。有谁知道这种选择是如何进行的?

编辑:所以我同意你们从上到下选择项目是正确的。但是如果我在响应ajax调用的WebMethod上坚持一个断点,那么就不会按顺序获取ID。这个订单是如何确定的?

3 个答案:

答案 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');