2016-03-09 4 views
0

В зависимости от того, имеет ли модель какой-либо контент или нет, я хотел бы изменить цвет фона элемента HTML с помощью jQuery в представлении. Но это не работает, как я хочу, потому что документ уже загружен внутри DOM, а PartialView просто меняет небольшую часть документа, и сценарий не будет запускаться больше, чем в первый раз. Есть ли способ решить это по-другому?Запустить код jQuery в PartialView

Это мой код, который я думал, что должен работать:

@if (Model.Any()) 
{ 
<script> 
    $(document).ready(function() { 
     $("#Filter").addClass("match"); 
    }); 

    console.log("Det matchar!!"); 
</script> 

Show content of list here 

} 
else 
{ 
<p>No Match!</p> 

<script> 
    $(document).ready(function() { 
     $("#Filter").addClass("noMatch"); 
    }); 
    console.log("Ingen match!!"); 
</script> 
} 

EDIT 1: Это входной элемент Я хочу изменить, и что находится внутри index.cshtml файла.

EDIT 2: Я также протестировал назвать простой яваскрипт функции внутри индексного файла из представления, как это:

<script> 
    checkMatch(); 
    </script> 

Я мог бы передать значения, как «нет» или «да», а затем в зависимости на входном параметре измените входной элемент. Но я не уверен, что вызов выполняется, когда вставлен код внутри PartialView.

EDIT: 3 Извините, я забыл написать, что частичный вид обновляется с помощью AJAX. Думаю, это может быть одна проблема !?

EDIT: 4 Кажется, что он работает сейчас! Когда я переместил функцию javascript, которая сначала находилась в коде jQuery document.ready, она работала путем вызова функции внутри индексного файла! Спасибо всем, кто пытался мне помочь! И он не работал с jQuery .addClass, но он работал с .css, чтобы изменить цвет фона элемента таким образом. Мой вопрос решен!

+0

является элемент, добавленный после загрузки страницы мгновенно? –

+0

'console.log' показывает любой выход? –

+0

@PavanTeja Да console.log работает все время. –

ответ

1

Простым способом добиться этого было бы добавить соответствующий CSS-класс в HTML, прежде чем возвращать его с сервера. Есть различные способы сделать это с Razor, но, пожалуй, самый простой что-то вдоль этих линий:

@if (Model.Any()) { 
    <div id="Filter" class="match"> 
} 
else { 
    <div id="Filter" class="noMatch"> 
} 
+0

ОК, но у меня есть элемент и большая часть HTML внутри файла index.cshtml. –

+0

Ah ok, в этом случае - можете ли вы включить весь свой код вида в вопрос? –

+0

Это почти код. Я только что удалил для каждого цикла и некоторый код таблицы html, чтобы сделать его как можно короче. Может ли это помочь добавить этот код? –

1

document.ready обыкновение работать here.place You код в расслоение плотной тег сценария непосредственно.

попробовать это

@if (Model.Any()) { 
<script> 
    $("#Filter").addClass("match"); 

    console.log("Det matchar!!"); 
</script> 

Show content of list here } else { 
<p>No Match!</p> 

<script> 
    $("#Filter").addClass("noMatch"); 

    console.log("Ingen match!!"); 
</script> 
} 
+0

Спасибо, но я уже тестировал это, и он не работает! –

+0

Вы можете показать разметку входного элемента? –

+0

Смежные вопросы