如何在特定页面中停止jQuery插件?

时间:2017-02-01 14:15:20

标签: javascript jquery asp.net-mvc

我有一个使用MVC布局的Web应用程序,我的所有视图都继承自此页面,在布局页面我使用的是jquery插件(iCheck),现在我有一个页面也继承了我的布局但我不喜欢#39;我希望这个页面使用该插件,在布局中我有这个脚本:

<script>
    $(function() {
        $('input').iCheck();
    });
</script>

现在有没有办法告诉jQuery不要在该页面中使用这个插件?

5 个答案:

答案 0 :(得分:0)

一种方法是:

在布局中用以下代码替换脚本代码:

@{
  bool? dontICheck = ViewBag.dontICheck;
}
if(!dontICheck.getValueOrDefault()){
<script>
    $(function() {
        $('input').iCheck();
    });
</script>
}

这意味着iCheck将默认工作。如果您不希望它工作,请将此行添加到视图的操作方法中,您不想使用iCheck:

ViewBag.dontICheck = true;

答案 1 :(得分:0)

一个简单的方法是添加一个你不希望应用它的类,例如:

<input class='noicheck' ...

然后在你的选择器中应用它:

$("input:not(.noicheck)").iCheck();

这将在您的整个网站上运行,无需逐页更改或对viewmodel / viewbag等进行任何更改,并且仍允许某些控件应用此检查。

答案 2 :(得分:0)

我认为您的页面有一些特定的样式类(例如&#34;特殊页面&#34;)。

您可以使用它来识别您在该页面上而不是init jQuery插件。

替换

$('input').iCheck();

if(!$(".special-page").length){
   $('input').iCheck();
}

答案 3 :(得分:0)

替换您拥有的当前脚本块:

@if (IsSectionDefined("iCheck")) {
    RenderSection("iCheck");
}
else { 
    <script>
        $(function() {
            $('input').iCheck();
        });
    </script>
}

然后,在您不希望此次运行的视图中,添加:

@section iCheck {}

通过定义该部分,布局将包含该部分的内容,而不是默认代码(您的iCheck脚本),它将为空,因为大括号内没有提供任何内容。

答案 4 :(得分:0)

更好的方法,而不是依赖于viewbags和其他服务器端代码,是在元素中使用类,因为它更清楚代码的意图是什么。 这是一个例子。

{{1}}