/ / Jak zatrzymać wtyczkę jQuery na określonej stronie? - javascript, jquery, asp.net-mvc

Jak zatrzymać wtyczkę jQuery na konkretnej stronie? - javascript, jquery, asp.net-mvc

Mam aplikację internetową, która korzysta z układów MVC,wszystkie moje widoki dziedziczą z tej strony, na stronie układu używam wtyczki jquery (iCheck), teraz mam stronę, która również dziedziczy z mojego układu, ale nie chcę, aby ta strona używała tej wtyczki, w układzie I mieć ten skrypt:

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

Czy jest jakiś sposób, aby powiedzieć jQuery, że nie używa tej wtyczki na tej stronie?

Odpowiedzi:

0 dla odpowiedzi № 1

Lepszym podejściem niż poleganie na workbagach i innych kodach po stronie serwera jest użycie klasy w elementach, ponieważ jest bardziej jasne, jaki jest zamiar kodu. Oto przykład.

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

0 dla odpowiedzi nr 2

Jednym ze sposobów jest to:

W układzie zamień kod skryptu na:

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

Oznacza to, że iCheck będzie działać domyślnie. Jeśli nie chcesz, aby działało, dodaj ten wiersz do metody działania widoku, której nie chcesz używać iCheck:

ViewBag.dontICheck = true;

0 dla odpowiedzi № 3

Prostą metodą jest dodanie klasy, w której nie chcesz, aby była stosowana, np .:

<input class="noicheck" ...

następnie zastosuj to w selektorze:

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

Będzie to następnie działać w całej witrynie bez konieczności wprowadzania zmian strona po stronie lub jakichkolwiek zmian w modelu viewmodel / viewbag itp. I nadal pozwoli na pewne kontrole w celu zastosowania tej kontroli.


0 dla odpowiedzi nr 4

Zakładam, że twoja strona ma określoną klasę do stylizacji (na przykład „special-page”).

Możesz użyć tego do zidentyfikowania, że ​​jesteś na tej stronie, a nie do inicjowania wtyczki jQuery.

zastąpić

$("input").iCheck();

z

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

0 dla odpowiedzi № 5

Zastąp obecny blok skryptu:

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

Następnie w widoku, w którym nie chcesz tego uruchamiania, dodaj:

@section iCheck {}

Po zdefiniowaniu sekcji układ będzie obejmowałzawartość sekcji zamiast domyślnego kodu (skryptu iCheck), który będzie pusty, ponieważ nic nie zostało podane w nawiasach klamrowych.