MVC3:IE8因在列表中使用JqueryUI而崩溃

时间:2011-02-24 18:08:27

标签: list asp.net-mvc-3 checkbox razor jquery-ui-plugins

我正在使用VS2010 + MVC3(Razor)+ IE8 + JQueryUI堆栈,我试图使用jqueryui .buttons()函数创建一个按钮列表。但是,由于某些未知原因,当按下按钮时,它将始终使Dev-Webserver + IE8崩溃。下面的代码是必要的,足以证明该错误。只需将其剪切并粘贴到Home / Index.chtml文件中即可运行。

<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.10/themes/base/jquery-ui.css" type="text/css" media="all" /> 
<link rel="stylesheet" href="http://static.jquery.com/ui/css/demo-docs-theme/ui.theme.css" type="text/css" media="all" /> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js" type="text/javascript"></script> 
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.10/jquery-ui.min.js" type="text/javascript"></script> 

<ul>
    <li>
        <div>
            <label for="aa">text</label>
            <input type="checkbox" id="aa" class="theclass"/>
        </div>
    </li>
</ul>
<script type="text/javascript">
                            $(function () {
                                $(".theclass").button();
                            });
</script>

这适用于Chrome,如果将其放入纯HTML文件并在VS2010之外运行,也不会出现错误,因此这可能是MVC / ASP特有的。删除周围的div将阻止其崩溃。值得注意的是,当按钮是div组中的最后一个按钮时,这只会崩溃。作为一个黑客,我在输入元素后面添加了一个空div,这使它不会崩溃。这是一个非常特殊的错误,所以我在这里发布这个以防万一有类似的麻烦。

干杯 罗布

2 个答案:

答案 0 :(得分:0)

IE8有一大堆bug。最好的建议是看看这个IE8错误列表。每当我发现IE8错误时,我都会使用此列表。

http://jhop.me/ie8-bugs

我在该页面上找到的最接近的东西是以下javascript错误。

在一个突破for循环的语句中使用querySelectorAll会触发一个完整的程序崩溃。

jQuery方法可能导致该问题,或者按钮方法导致了这种情况。你为什么试图把一个复选框变成一个按钮?我不认为按钮方法应该像那样工作。

答案 1 :(得分:0)

这也发生在我身上,但不是VS2010而不是MVC,这只是jQueryUI按钮似乎发生的事情......

我的解决方案很简单,将有问题的元素包装在SPAN标记中。在上面的例子中,这应该解决问题......

<span class="theclass"><input type="checkbox" id="aa"></span>