2017-02-01 16 views
0

MVCレイアウトを使用するWebアプリケーションがあり、すべてのビューがこのページを継承しています。レイアウトページでjqueryプラグイン(iCheck)を使用しています。これで、レイアウトから継承するページもありますが、jQueryプラグインを特定のページで停止する方法は?

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

は今、そのページにはこのプラグインを使用しないのjQueryを伝えるためにどのような方法があります:トン私はこのスクリプトを持っているレイアウトで、このページはそのプラグインを使用したいですか?

答えて

0

ビューバッグや他のサーバー側コードに頼るのではなく、コードの意図がより明確であるため、要素内でクラスを使用する方がよいでしょう。 例を示します。

<input class="not-icheck" value="I'm a rebel!" /> 
... 
<script> 
    $(function() 
    { 
     $('input:not(.not-icheck)').iCheck(); 
    }); 
</script> 
0

一つの方法はこれです:

レイアウトでは、これでスクリプトコードを置き換える:

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

これはiCheckはデフォルトで動作することを意味します。簡単な方法は、例えば、あなたはこれが適用されたくないクラスを追加することです

ViewBag.dontICheck = true; 
0

あなたはそれはあなたがiCheckを使用したくないビューのアクションメソッドに次の行を追加仕事をしたいいけない場合
<input class='noicheck' ... 

その後、あなたのセレクタにこれを適用します。

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

これは、ページ単位の変更または/ viewbagなど、あなたのviewmodelへの変更を必要とすることなく、サイト全体動作し、まだいくつかのことができますこのチェックが適用されるように制御します。

0

あなたのページには、スタイリングのための特定のクラスがあると仮定します(「スペシャルページ」など)。

これを使用して、自分がページ上にあることを識別し、init jQueryプラグインではないことを識別できます。

あなたが持っている現在のスクリプトブロックに置き換え

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

$('input').iCheck(); 

を置き換える:追加し、あなたがこの実行を望んでいないという見解に続いて

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

を:

@section iCheck {} 

セクションを定義すると、デフォルトのコード(iCheckスクリプト)ではなくセクションの内容がレイアウトに含まれますが、中括弧の中に何も入力されていないため空白になります。

関連する問題