我有2个单独的有序列表,我想在一个对话框中显示但由于某种原因,我会得到两个对话框。这是为什么?
<ol>
Test
<li>a</li>
<li>b</li>
</ol>
<ol>Test
<li>a</li>
<li>b</li>
</ol>
$.ajax({
url: 'test.asp',
data: vals,
dataType: 'json',
type: 'post',
success: function(data){
var $dialog = $(data.message)
.appendTo('body')
.dialog({
modal: true
});
}
});
以上产生了2个对话框。
答案 0 :(得分:0)
将它们包裹在一个<div>
中,如下所示:
$.ajax({
url: 'test.asp',
data: vals,
dataType: 'json',
type: 'post',
success: function(data){
var $dialog = $("<div>").append(data.message)
.appendTo('body')
.dialog({
modal: true
});
}
});
问题是由响应中的两个有效HTML字符串作为数组引起的。当您调用$(data.message)时,jQUery会创建两个单独的<ol>
元素并将它们返回到数组中。然后,当您在数组上调用.dialog()
时,每个元素都会成为对话框中的顶级节点。