2015-10-06 34 views
1

我试图让下面的代码在我的MVC 5项目的工作:警戒关闭按钮不Bootstrap与ASP.NET MVC工作

<!-- for the snippet to work --> 
 
<script src="http://code.jquery.com/jquery-2.1.4.min.js"></script> 
 
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css"> 
 
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script> 
 

 

 
<p>This alert should close, when clicking the 'x'-button:</p> 
 
<div class="alert alert-warning alert-dismissible fade in" role="alert"> 
 
    <button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span> 
 
    </button> 
 
    <strong>Holy guacamole!</strong> Best check yo self, you're not looking too good. 
 
</div>

我把它从official bootstrap site。当点击'x'按钮时,警报应该关闭。正如你所看到的,它在这段代码中实际上工作正常。但它不在我的应用程序中。警报确实没有关闭。很显然,MVC框架必须为此负责。

浏览器的调试控制台不显示任何错误消息。是的,我还在项目中加入了Bootstrap(3.5.5)和jQuery(2.1.4)的JS源代码 - 它们在浏览器的调试视图中正确加载并显示在'sources'下。

编辑:亚伦建议其他一些脚本可能会覆盖/隐藏引导代码。所以这些都是JS库我的项目目前使用:

  • jQuery的2.1.4.min.js
  • bootstrap.min.js
  • jquery.unobtrusive-ajax.min.js
  • 的jQuery -ui-1.11.4.min.js
  • jquery.effects.highlight.min.js
  • jquery.effects.core.min.js
  • 加上其他一些手写的帮手JS与辅助方法

它们的加载顺序与列出的顺序相同。遗漏以下库并没有帮助:

  • 的jQuery-UI-1.11.4.min.js
  • jquery.effects.highlight.min.js
  • jquery.effects.core.min.js

删除jquery.unobtrusive-ajax.min.js会导致我的应用程序“崩溃”,因为它无法再动态加载内容。

下面的匿名函数声明被调用,当文件被加载(前的警报已被动态插入到HTML):

Alert.prototype.close = function (e) {...} 

点击“X'键好像不叫bootstrap.js中的任何代码,但也许我只是没有找到放置断点的正确位置。

+0

你可以创建jsfiddle吗? – Win

+0

是的,jsfiddle和bootply也可以工作 – wodzu

+0

嗯,它只发生在你的参与项目中。您需要删除所有JavaScript并将它们重新放回一次。 – Win

回答

0

我得到它的工作,但我不太清楚这个问题的实际原因是什么。下面是我做的:

  1. 删除所有本地引导源(通过的NuGet最初下载)
  2. 使用远程数据源,而不是(如片段)

此后警报正常关闭,因为它应该。奇怪的是,如果我从nuget重新安装bootstrap源代码并使用它们而不是远程代码,问题就不会再发生了。我提到的其他脚本似乎与bootstrap或jquery没有冲突,因为我仍在使用它们。我也是不是更改加载顺序。

我必须要么无意中损坏本地引导程序源必须在bootstrap nuget软件包的以前版本中出现错误。也许有相同的引导版本有不止一个软件包。我认为可以排除缓存问题,因为除了重新安装源代码之外,我实际上并没有改变任何内容。

0

小提琴包括我工作得很好。我会建议打开Chrome开发者工具(点击ctrl+shift+j)进行调试。

可能的问题:

你可以有一个代理/防火墙阻止CDN让你的JS不会加载。这将显示在开发人员工具的网络选项卡中。尝试在本地加载引导程序js文件。

或者,JavaScript存在冲突的版本。您会在开发人员工具的控制台选项卡中看到一个错误消息。

+0

我有我的机器上运行的MVC应用程序的所有来源,所以我会排除任何网络问题。网络选项卡不会显示任何可疑内容,如果返回HTTP 200 OK。控制台选项卡始终保持清晰。 – wodzu

0

在你的评论中提到,这些是您正在使用的库:

  • jQuery的2.1.4.min.js

  • bootstrap.min.js

  • 的jQuery .unobtrusive-ajax.min.js

  • jquery-ui-1.11.4.min.js

这也是他们加载的顺序吗?如果是这样,它看起来像close()可能会被jqueryUI中的close()覆盖,因为jqueryUI是在引导后加载的。

+0

事实并非如此:正如我已经说过的,它们是按照这个特定顺序加载的,但是如果我删除了'jquery-ui','jquery.effects.highlight'和'jquery.effects.core',问题依然存在。 – wodzu