我正在尝试使用以下代码在我的MVC 5项目中工作:
<!-- 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”下。
编辑:Aaron建议其他一些脚本可能会覆盖/隐藏引导程序代码。所以这些是我的项目目前使用的js库:
它们的加载顺序与列出的顺序相同。省略以下库没有帮助:
删除jquery.unobtrusive-ajax.min.js会导致我的应用程序“崩溃”,因为它无法再动态加载内容。
调用匿名函数声明后,当文档加载时( 之前警报已动态插入到html中):
Alert.prototype.close = function (e) {...}
单击“x”按钮似乎不会调用bootstrap.js中的任何代码,但也许我找不到正确放置断点的位置。
答案 0 :(得分:0)
ctrl+shift+j
)进行调试。
可能的问题:
你可以让代理/防火墙阻止CDN,这样你的JS就不会加载。这将显示在开发人员工具的网络选项卡中。尝试在本地加载bootstrap js文件。
或者,有一些冲突的javascript版本。您将在开发人员工具的控制台选项卡中看到一个错误。
答案 1 :(得分: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是在bootstrap之后加载的。
答案 2 :(得分:0)
我得到了它的工作,但我不太确定这个问题的实际原因是什么。这是我做的:
之后警报按原样正常关闭。奇怪的是,如果我从nuget重新安装bootstrap源并使用它们而不是远程源,则不再出现问题。我提到的其他脚本似乎与bootstrap或jquery没有冲突,因为我还在使用它们。我也不更改了加载顺序。
我必须已经无意中损坏了本地引导程序源或以前版本的bootstrap nuget包中一定存在错误。也许同一个bootstrap版本有不止一个包。我认为可以排除缓存问题,因为除了重新安装源代码之外我实际上没有改变任何内容。