Javascript 单击页面上的任意位置时关闭引导警告

Javascript 单击页面上的任意位置时关闭引导警告,javascript,c#,asp.net-mvc,twitter-bootstrap,Javascript,C#,Asp.net Mvc,Twitter Bootstrap,我有两种不同类型的引导警报(警告和危险)。无论发生什么情况,危险警报都应该出现在页面上。警告警报发生在用户单击下拉列表时,它会显示引导警告通知。用户必须单击“x”才能关闭它。我需要它的工作时,用户点击页面上的任何地方或通过点击“x” HomeController.cs case "Carrier": var carrierid = (from foo in db.Carriers where foo.ID == warningid

我有两种不同类型的引导警报(警告和危险)。无论发生什么情况,危险警报都应该出现在页面上。警告警报发生在用户单击下拉列表时,它会显示引导警告通知。用户必须单击“x”才能关闭它。我需要它的工作时,用户点击页面上的任何地方或通过点击“x”

HomeController.cs

case "Carrier":
    var carrierid = (from foo in db.Carriers
                     where foo.ID == warningid
                     select foo.WarningID).Single();
    if (carrierid != null)
    {
        warning = (from warnings in db.Warnings
                   where warnings.IsActive == true && warnings.Id == carrierid
                   select warnings.WarningBody).SingleOrDefault();
        if (warning != null)
        {
            warning = ("<div class=\"alert alert-warning alert-dismissible\" id=\"myWarning\" role=\"alert\"><button type=\"button\" class=\"close\" data-dismiss=\"alert\" aria-label=\"Close\"><span aria-hidden=\"true\">&times;</span></button><strong>" +
            warning + "</strong></div>");
        }
        else
        {
            warning = "";
        }
    }
    else
    {
        warning = "";
    }
    return Json(warning, JsonRequestBehavior.AllowGet);
default:
    break;
           //// warning display script takes a value of warningid and warningcaller
            $(document).ready(function () {
                   var warningid = 0;
                   var warningcaller = "Universal";
                   loadWarnings(warningid, warningcaller);
             });
              $('#Phones').change(function () {
                   var warningid = $(this).val();
                   var warningcaller = "Phone";
                   loadWarnings(warningid, warningcaller);})
             $('#Carriers').change(function () {
                   var warningid = $(this).val();
                   var warningcaller = "Carrier";
                   loadWarnings(warningid, warningcaller);})
          function loadWarnings(warningid, warningcaller) {
$.getJSON("../Home/LoadWarnings", { warningID: warningid, warningCaller: warningcaller },
            function (warning) {
            var select = $('#warnings');
            select.append(warning);

    });    
}; 

正如Martin所建议的,这是您需要在javascript中完成的事情。我还没有测试过这个,但会是这样的:

$(document).click(function (event) {            
   $(".alert").hide();
});
这基本上是,单击页面上的任何位置都会隐藏任何显示的警报

$(document).ready(function () { 
     $("#myWarning").click(function () {  
         $(".alert").alert("close"); 
     }); 
 });
这样做,你犯了两个错误:

  • 您正在将click事件绑定到一个元素,该元素可能 加载页面时不存在
  • 您正在绑定单击 事件到受限元素。这意味着警报不会被激活 单击页面上的任何位置时关闭。在这种情况下,只有单击#myWarning将关闭警报
  • 最后,您应该使用@Bryan已经发布的内容:)

    编辑:

    假设你有一组你总是想在页面加载时关闭的警报,向这些元素添加一种识别它们的方法,例如一个类“close on Screen Click”


    。只要在屏幕上单击,就会关闭这些元素,因为您有两种不同类型的引导警报(危险和警告)。您必须使用“.alert warning”,因为当用户在页面上的任何位置单击鼠标时,您希望消除该警告。“.alert”是所有引导警报,但是,如果您需要删除特定类型的警报,可以调用上下文类(例如,.alert success、.alert info、.alert warning和/或.alert danger)


    这是您需要从视图中的JavaScript而不是控制器中执行的操作。让我更新代码。以前的程序员执行了此操作,我不知道如何执行此操作,我也是MVC新手。@Bryan代码可以工作,但当我单击某个内容时,它会删除我的其他通用修改。我有一些危险的引导程序警报,提示We’我们总是假设存在。警告引导是我需要消除的。你可以在提醒中添加一个额外的类,每当用户单击屏幕上的任何位置时,你总是想关闭该类提醒。我该如何处理@Jota.Toledo?我上传了一张图片。编辑了我的答案
    $(document).click(function () { 
         $(".close-on-screenclick.alert").alert("close");  
     });
    
                   $(document).click(function (event) {
                       $(".alert-warning").hide();
                   });