我有一个使用MVC布局的Web应用程序,我的所有视图都继承自此页面,在布局页面我使用的是jquery插件(iCheck),现在我有一个页面也继承了我的布局但我不喜欢#39;我希望这个页面使用该插件,在布局中我有这个脚本:
<script>
$(function() {
$('input').iCheck();
});
</script>
现在有没有办法告诉jQuery不要在该页面中使用这个插件?
答案 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}}