jquery .each迭代

时间:2009-11-09 02:48:12

标签: jquery iteration css-selectors

如果您有多个具有相同类名的(动态)文本框并使用jquery循环遍历每个所述文本框,您是否可以假设每次选择文本框的顺序是相同的?< / p>

示例:

文本框1值= 1 文本框2值= 2 文本框3值= 3

$(".textboxes").each(function(){
     alert( $(this).val() );
});

每次都会以相同的顺序打印这些值吗?

3 个答案:

答案 0 :(得分:8)

循环从开始到结束,0到最大长度,如果&gt; 0,所以如果你提供一个html选择器(它将按照它们在结构/标记中定义的顺序拾取元素),它将始终以相同的顺序。

但是,如果你直接将一个对象输入$ .each,因为没有标准的方式或规则来规定排序应该是什么,通常它会按照我们所见过的大多数解释器的顺序排列,但是口译员并不应该遵守这个“规则”。

each: function( object, callback, args ) {
    var name, i = 0, length = object.length;

    if ( args ) {
        if ( length === undefined ) {
            for ( name in object )
                if ( callback.apply( object[ name ], args ) === false )
                    break;
        } else
            for ( ; i < length; )
                if ( callback.apply( object[ i++ ], args ) === false )
                    break;

正如您所看到的,第二个for循环是实际执行的循环。

答案 1 :(得分:1)

jQuery将从上到下获取元素并始终以相同的方式,因此每次订单都是相同的

答案 2 :(得分:-3)

这有关系吗?如果您正在编写.each函数,那么您应该对每个元素执行相同的操作。否则你应该使用其他一些方法。因此,元素出现的顺序可能无关紧要,如果确实如此,您可能已经发现了代码气味。

如果您正在寻找一种方法来单独识别列表中的每个元素,您可以尝试使用其ID,例如:

alert($(this).id + ": " + $(this).val);

这样做的好处是,如果预期的元素没有出现在列表中,那么识别它会更容易。