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 № 1Lepszym 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.