Jquery:循环迭代

时间:2013-02-12 02:00:37

标签: php jquery iteration

不确定它是否实际迭代一次,但只生成一个对话框。 jquery循环针对每个PHP循环迭代的隐藏输入,从一个循环计数;总共有两个'roomID'。

使用alert给了我两个,但它没有用jquery分配对话框,这反过来给了我第一个。为什么会这样?

有没有更好的方法:

$('input#roomID').each(function() {
   var roomID = $('input#roomID').val();
   alert($(this).val());

            $( 'div.edit-dialog-'+roomID ).dialog({ 
                autoOpen: false,
                height: 500,
                width: 550,
                modal: true,
                position:['middle','middle'],
                draggable: true,
                //resizable: true,
                buttons: {
                    Cancel: function() {
                        $( this ).dialog( "close" );
                    }
                },
                    close: function() {
                        allFields.val( "" ).removeClass( "ui-state-error" );
                    }
            });

            $( 'a.room-edit-'+roomID).click(function() {
                $( 'div.edit-dialog-'+roomID ).dialog( "open" );
            });
    });

我对Jquery有点新鲜。

2 个答案:

答案 0 :(得分:4)

您正在选择ID为“#”。

Dom需要唯一的ID。

尝试将其改为班级。

所以而不是

<input id="roomID" type="text" />

添加课程

<input class="roomID" type="text" />

然后

$('input.roomID').each();

将使用类roomID

选择页面上的所有输入

修改

jQuery的每个函数都将通过选择器匹配。所以说你有这个HTML:

<input class="hello" />
<input class="hello" />
<span class="hello">text</span>

然后当你打电话给每个人时:

$('.hello').each(function(i, ele){});

每次函数将this(或将作用域)添加到各个dom元素时,jQuery将调用该函数3次。它按照它们出现在dom中的顺序执行此操作。因此,第一次通过input然后input然后span

每次this将指向相应的dom元素而不是jQuery映射元素。这就是为什么你需要$(this)来访问jquery的辅助方法而不仅仅是this.val()

它还使用2个参数调用函数,第一个是迭代编号,因此在span情况下,这将是2.而第二个是元素。

答案 1 :(得分:0)

如果您使用another selecto r来自定义输入,这会更好。

 <input name="new3" />
 <input name="new2" />
 <input name="new1" />

 <script>
     $('input[name*="new"]').val('xxxxx');
 </script>