gpt4 book ai didi

jquery - ajax 调用后 Internet Explorer 不展开表

转载 作者:行者123 更新时间:2023-12-01 08:29:11 27 4
gpt4 key购买 nike

当我进行 jquery ajax 调用以在页面加载时自动填充下拉列表时,下拉控件将​​被包含的表切断。我知道如果将表格宽度设置为 100% 可以解决此问题,但就我而言,我不能这样做。这段代码在FF中运行良好。这几乎就像 IE 在 ajax 调用完成后不会“重新渲染”页面一样。这是代码--

<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js"></script>
</head>
<body>
<table border="1">
<tr>
<td>
<select>
<option>Test 1</option>
<option>Test 2</option>
<option>Test 3</option>
</select>
</td>
</tr>
<tr>
<td>
<select id="mySelect">
</select>
</td>
</tr>
</table>

<script type="text/javascript">
var mySelect = $( "#mySelect" );

fillListCombo = function( json )
{
if ( json )
{
mySelect.empty();
$( json ).each( function( i, obj )
{
var option = $( "<option></option>" );
option.val( obj.id );
option.text( obj.text );
option.appendTo( mySelect );
} );
}
else
{
mySelect.find( 'option' ).remove().end().append( '<option value="0">(none available)</option>' ).val( '0' );
}
}

updateListCombo = function()
{
$.ajax(
{
type: "GET", url: "http://localhost/Ajax/ListLookupPage.aspx", dataType: "json", data:
{
listkindid: "1", userid: "17"
},
timeout: 2000, success: function( opts )
{
fillListCombo( opts );
},
error: function( xhr, status )
{
mySelect.find( 'option' ).remove().end().append( '<option value="0">(none selected)</option>' ).val( '0' );
}
} );
};

updateListCombo();
</script>
</body>
</html>

我希望我有一个可以提供的公共(public) Ajax 页面,以便可以将其复制并粘贴到文本编辑器中以便您自己尝试,但我没有。

它在 Firefox 中的显示方式:
alt text
在IE7/8中的显示方式:
alt text

关于如何在 ajax 回调完成后强制 IE 7/8 正确渲染有什么想法吗?

谢谢。

最佳答案

有点 hack,但似乎如果您更改 select 不需要的 css 属性,它会强制更新。

$('#mySelect').css({margin: '0'}).append('<option value="0">(none available)</option>');

(截取了您的示例,但原则应该是相同的。)

我仅在 XP 上使用 ie7 进行了测试。

关于jquery - ajax 调用后 Internet Explorer 不展开表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/951562/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com