不确定它是否实际迭代一次,但只生成一个对话框。 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有点新鲜。
答案 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>