Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery Internet Explorer在ajax调用后不展开表_Jquery_Ajax_Internet Explorer_Rendering - Fatal编程技术网

Jquery Internet Explorer在ajax调用后不展开表

Jquery Internet Explorer在ajax调用后不展开表,jquery,ajax,internet-explorer,rendering,Jquery,Ajax,Internet Explorer,Rendering,当我调用jqueryajax自动填充页面加载下拉列表时,下拉控件被包含的表切断。我知道,如果将桌子宽度设置为100%,它将解决这个问题,但在我的情况下,我不能这样做。这段代码在FF中运行良好。这几乎就像在ajax调用完成后IE不会重新呈现页面一样。这是密码- <html> <head> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquer

当我调用jqueryajax自动填充页面加载下拉列表时,下拉控件被包含的表切断。我知道,如果将桌子宽度设置为100%,它将解决这个问题,但在我的情况下,我不能这样做。这段代码在FF中运行良好。这几乎就像在ajax调用完成后IE不会重新呈现页面一样。这是密码-

<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>
我希望我能提供一个公开的Ajax页面,这样它就可以被复制并粘贴到文本编辑器中供您自己尝试,但我没有

它在Firefox中的显示方式: 它在IE7/8中的显示方式: 关于如何在ajax回调完成后强制IE 7/8正确渲染,有什么想法吗


谢谢。

有点麻烦,但如果您更改select不需要的css属性,它将强制更新

$('#mySelect').css({margin: '0'}).append('<option value="0">(none available)</option>');
截短了您的示例,但原则应该是相同的


我只在XP上用ie7测试了这一点。

Wow!非常令人印象深刻。我从没想过尝试那种方法。是的,这肯定解决了我的问题。谢谢很高兴它对你有用。如果还没有bug报告,那么向jQuery提交bug报告可能是值得的,因为它只影响ie。我向jQuery添加了一个问题。不确定这是jquery错误还是IE问题。再次感谢。