Запускать скрипты ajax на странице при навигации по ajax? - PullRequest
0 голосов
/ 30 мая 2010

У меня возникла небольшая проблема в проекте ASP.NET MVC.

У меня есть чат в правом нижнем углу (например, Facebook), и, конечно, я не хочу, чтобы это перезагружалось, когда навигация по всем моим навигациям осуществляется с помощью ajax.

Проблема, с которой я сталкиваюсь, заключается в том, что я использую следующий код в верхней части страницы просмотра:

<script type="text/javascript">
$(document).ready(function() {
  $('#divTS').hide();
    $('a#showTS').click(function() {
 $('#divTS').slideToggle(400);
 return false;
  });
});

</script>

Проблема в том, что этот код загружается только с помощью ajax и, похоже, не срабатывает? Я хотел бы запустить все сценарии в только что загруженном представлении, как если бы я не перемещался с помощью ajax.

Я не могу поместить это в site.master, так как он загружается только один раз, и тогда, вероятно, div, которые я пытаюсь скрыть, не существует.

Есть ли хороший способ запуска сценариев в загруженном ajax div?

Ответы [ 2 ]

0 голосов
/ 30 мая 2010

Вам нужно будет запустить сценарии в функции обратного вызова успеха вашего сценария ajax. Я бы порекомендовал вам перенести это в отдельную функцию:

function setupEffects() {
    $('#divTS').hide();
    $('a#showTS').click(function() {
        $('#divTS').slideToggle(400);
        return false;
    });
}

$(document).ready(function() {
    setupEffects();
});

И при успешном обратном вызове вашего скрипта вызовите эту функцию:

success: function(result) {
    setupEffects();
}
0 голосов
/ 30 мая 2010

Мастер-страница перезагружается при переходе к другому представлению. Вы также можете проверить, существует ли div с $('#div').length > 0.

Кстати, ajax-навигация с полным сайтом не должна использоваться. Перезагрузите свой чат на навигацию - лучше всего поставить его на контроль (делает вещи проще).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...