2015-10-06 76 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