Ведение кода JavaScript в <Head>после обратной передачи ASP.Net. - PullRequest
3 голосов
/ 11 ноября 2008

Как видно из названия, у меня проблемы с сохранением кода при обратной передаче. У меня есть куча кода JQuery в разделе Head, и это прекрасно работает, пока не произойдет обратная передача, после которой он перестает функционировать!

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

JavaScript это:

        <script type="text/javascript">
        $(document).ready(function()
        {
            $('.tablesorter tbody tr').tablesorter();

        $('.tablesearch tbody tr').quicksearch({
            position: 'before',
            attached: 'table.tablesearch',
            stripeRowClass: ['odd', 'even'],
            labelText: 'Search:',
            delay: 100
        });
       }); 
        </script>

Ответы [ 5 ]

6 голосов
/ 11 ноября 2008

Если вы просто жестко закодировали этот код в заголовке своей страницы, пост-ответ не повлияет на него. Я бы проверил следующее путем отладки (FireBug в FireFox - хороший отладчик):

  • Убедитесь, что сценарий все еще находится в голове при обратной передаче.
  • Убедитесь, что классы CSS на самом деле привязаны к какому-либо элементу на странице.
  • убедитесь, что код jquery выполняется после того, как браузер завершил загрузку после возврата.

РЕДАКТИРОВАТЬ: Используете ли вы UpdatePanels для вашего сообщения обратно? Другими словами, это асинхронный постбэк или нормальное полное обновление страницы?

РЕДАКТИРОВАТЬ РЕДАКТИРОВАТЬ: Ahhhhh ... Хорошо. Так что, если вы используете UpdatePanels, то состояние готовности документа уже находится в состоянии готовности, поэтому часть кода jquery не будет запущена снова. Я бы выделил делегат jquery в отдельную функцию, которую вы также можете вызвать после асинхронной обратной передачи.

2 голосов
/ 23 сентября 2009

введите свой код в

function pageLoad(sender, args) {

    /* code here */

}

вместо $(document).ready(function() { ... });

pageLoad() - это функция, которая будет выполняться после всех обратных передач, синхронных и асинхронных. Смотрите этот ответ для более подробной информации

1 голос
/ 11 ноября 2008
  1. Существует ли скрипт в HTML-коде после обратной передачи?
  2. Если так, выполняется ли код? Протестируйте, закомментировав свой код и временно добавив alert('test');
  3. Если так, элементы, на которые ссылается код, доступны на странице после обратной передачи?
1 голос
/ 11 ноября 2008

Я предполагаю, что постбэк исключает событие onLoad страницы, к которому jQuery нужно подключиться, чтобы использовать .ready ().

0 голосов
/ 23 сентября 2009

Вместо использования $ (document) .ready вы должны поместить свой код в функцию с именем pageLoad (). Функция pageLoad () по соглашению должна вызываться всякий раз, когда на странице есть postback / asyncpostback.

...