1

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

使用警报给了我两个,但它没有用 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 有点陌生。

4

2 回答 2

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 中出现的顺序执行此操作。所以第一次通过它将是inputthen 。inputspan

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

它还使用 2 个参数调用该函数,第一个是迭代次数,所以在这种span情况下这将是 2。第二个也是元素。

于 2013-02-12T02:03:21.300 回答
0

如果您使用另一个选择器来自定义输入,这会更好。

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

 <script>
     $('input[name*="new"]').val('xxxxx');
 </script>
于 2013-02-12T02:12:52.257 回答