2013-04-05 85 views
2

我很困惑为什么Twitter Bootstrap在Internet Explorer 8或9中无法正常工作。它在所有其他浏览器(包括Safari,Firefox和Chrome)上工作得很好。我一直在通过更高版本的Internet Explorer调试代码,并发现此错误:SCRIPT5009:'$'未定义。这里是它指向的代码:Twitter Bootstrap无法在IE 8或IE 9中工作

$('#myTab a').click(function (e) { 
e.preventDefault(); 
$(this).tab('show'); 
}) 

它说这是第一行,第一个字符。它允许用户点击下拉菜单,但混乱并且无法阅读。我正在使用标准的Bootstrap JavaScript文件。任何帮助将不胜感激,请让我知道如果我应该提供更多的代码。

下面是该页面的源代码:

<head> 
<script> 
jQuery('#myTab a').click(function (e) { 
e.preventDefault(); 
jQuery(this).tab('show'); 
}) 
</script> 
<script src="_internal/js/jquery.js" type="text/javascript" ></script> 
<script src="http://platform.twitter.com/widgets.js" type="text/javascript" ></script> 
<script src="_internal/js/bootstrap.js" type="text/javascript" ></script> 
<script src="_internal/js/bootstrap-transition.js" type="text/javascript" ></script> 
<script src="_internal/js/bootstrap.min.js" type="text/javascript" ></script> 
<script src="_internal/js/bootstrap-tab.js" type="text/javascript" ></script> 

<link href="_internal/css/bootstrap.css" rel="stylesheet" type="text/css" /> 
<link href="_internal/css/style.css" rel="stylesheet" type="text/css" /> 
</head> 

<body> 
<div class="accordion-group"> 
<div class="accordion-heading"> 
<a class="accordion-toggle" data-parent="#accordion2" data-toggle="collapse" 
href = "#collapseFive"> 
    Title goes here 
    </a> 
</div> 
<div class="accordion-body collapse" id="collapseFive" style="height: 0px;"> 
<div class="accordion-inner"> 
<table cellpadding="15" summary="table"> 
<tbody cellpadding="4"> 
<tr class="table-row"> 
<td width="250">Text</td> 
<td width="250">Text</td> 
<td width="200">Text</td> 
</tr> 
<tr> 
<td width="250"><a href="link" title="title">title</a></td> 
<td width="250">text/td> 
<td width="200">text</td> 
</tr> 
<tr> 
<td width="250"><a href="link">title</a></td> 
<td width="250">text</td> 
<td width="200">text</td> 
</tr> 
</tbody> 
</table> 
</div> 
</div> 
</div> 
</body> 
+0

尝试使用'jQuery'而不是'$' – 2013-04-05 15:50:54

+1

正如我回答,您尝试使用jQuery _before_它实际上包括在内。这就是答案,在下面移动你的函数或上面的''。 – davidkonrad 2013-04-05 17:50:22

回答

1

使用jQuery()代替$()。我不知道为什么jQuery没有加载$()选择器,但我有一个这样的问题,并改变所有的$()选择器jQuery()修复它。

+0

感谢您的回复。我试着按照你的建议做,但没有什么区别。我将大部分源代码发布到帖子中,试图了解问题所在。谢谢 – Chase552 2013-04-05 17:50:35

+0

也许尝试使用IFFE来正确设置$。当您使用它时,另一个库可能会支持$ Prototype Javascript库。如果情况确实如此,IFFE将会有所帮助。 – Phil 2014-06-03 22:04:42

1

您可能运行/声明此功能之前你包括jquery。如果您没有将函数包装到document.ready()中,则在执行点处将定义$jQuery

人们经常忘记,当他们复制粘贴引导程序主页html或示例,然后开始编写jQuery代码,因为他们已经习惯了 - 因为jQuery包含在<head>中,而不是在</body>之前。

+0

感谢您的回复。我将大部分源代码发布到这篇文章中。我看到你在说什么,但看起来像我在中包含jQuery。如果我没有,请让我知道。谢谢 – Chase552 2013-04-05 17:48:05

+0

@ Chase552,是的,但是你声明了你的函数 - 会立即执行 - 在jQuery-include之前。因此,页面在执行时不知道“$”或“jQuery”。 – davidkonrad 2013-04-05 17:51:21

1

这应该使事情工作。

<script type="text/javascript"> 
$.noConflict(); //Case sensitive 
</script>