2009-09-25 3 views
4

У меня есть Fancybox (или, точнее) несколько причудливых ящиков на странице asp.net.JQuery Fancybox не работает после обратной передачи

My Fancybox (jquery plugin) работает нормально, пока на странице не появится обратная передача, после чего он отказывается работать.

Любые мысли? Кто-то испытал подобное поведение?

UPDATE: Некоторый код ..

У меня есть DataBound ретранслятор с FancyBox на каждый повторяющийся пункте.

Они инстанциирован на (вне ретранслятора)

$(document).ready(function() { 
      $("a.watchvideo").fancybox({ 
      'overlayShow': false, 
      'frameWidth' : 480, 
      'frameHeight' : 400 
      }); 
     }); 

Якорь тег повторяется ..

HREF = "# watchvideo_ <% # Eval (" VideoID ")%>"

Как это ДИВ с

id="watchvideo_<%#Eval("VideoId") %> 

Как элемент сценария, который устанавливает флеш-ролики

Да, на странице VideoIds выводится страница.

UPDATE: Это не проблема со вспышкой ..

Это не проблема со вспышкой, как я уже пробовал без вспышки, она не будет даже выскочить окно с простым сообщением в .

ОБНОВЛЕНИЕ: Интересно, это обновленная панель.

Rebinding events in jQuery after Ajax update (updatepanel)

- подветренной

+1

Пожалуйста разместить вредоносный код, так что мы можем помочь. Без кода все, что мы можем сделать, это спекулировать – catsby

ответ

1

Это панель Update, как описано

здесь .. Rebinding events in jQuery after Ajax update (updatepanel)

Как предположил я просто заменил

$(document).ready(function() { 
      $("a.watchvideo").fancybox({ 
      'overlayShow': false, 
      'frameWidth' : 480, 
      'frameHeight' : 400 
      }); 
     }); 

с

function pageLoad(sender, args) 
{ 
    if(args.get_isPartialLoad()) 
    { 
     $("a.watchvideo").fancybox({ 
      'overlayShow': false, 
      'frameWidth' : 480, 
      'frameHeight' : 400 
      }); 

    } 
} 

и это сработало!

- Ли

+0

Вы - ЗВЕЗДА! – Anicho

1

Может быть, что код инстанцировании вставляется в кусок кода, который не запущен после обратной передачи?

+0

Интересный .. код запуска fancybox находится на странице aspx. Я могу попробовать записать его на страницу из кода позади. –

+0

Пробовал. Нет радости :-( –

14

Проблема заключается в использовании $(document).ready() связать FancyBox. Этот код выполняется только один раз, когда страница изначально загружена. Если вы хотите, чтобы функциональность fancybox на каждой обратной передаче, синхронной или асинхронной, замените $(document).ready() на pageLoad(sender, args). то есть

function pageLoad(sender, args) { 
     $("a.watchvideo").fancybox({ 
     'overlayShow': false, 
     'frameWidth' : 480, 
     'frameHeight' : 400 
     }); 
} 

see this answer for more info

+0

Cheers Russ, похоже, что вы решили бы мою проблему, если бы я не попал туда сам. Большое спасибо. Cheers, - Lee –

+1

Нет проблем, рада помочь. Я настоятельно рекомендую посмотреть ссылки на другой ответ - статья хорошо читается, и документация ASP.NET AJAX может оказаться чрезвычайно полезной. –

+0

Спасибо, что у меня была эта проблема, и я еще не разбираюсь в jQuery. решила его! Большое спасибо за публикацию этого вопроса. –

0

Это может помочь кому-то еще, но FancyBox присоединяет его код в < тела > элемент ... который все прекрасно и хорошо, но находится ВНЕ asp.net < формы > элемент , Мои проблемы обратной передачи ушел, когда я изменил FancyBox добавлять свои Dóm объекты в < форме > элемента:

$('body form:first').append(...); 
0

У меня была аналогичная проблема с страничной сетки ракурса. На первой странице сетки был запущен fancybox, в то время как переиздание не было.

Я думал, что это может быть проблема, связанная с UpdatePanel, которая обновляет только часть экрана.

Я решил проблему, заменив это:

<script> 
     $(document).ready(function() { 

      $("a.small").fancybox(); 

     }); 
    </script> 

с этим:

<script> 
     function pageLoad(sender, args) { 
      $("a.small").fancybox(); 
     }; 
    </script> 
Смежные вопросы