Как получить доступ к динамически генерируемому контенту страницы через jQuery? - PullRequest
0 голосов
/ 26 октября 2011

У меня есть страница веб-части SharePoint со списком, который сгруппирован и по умолчанию настроен как «свернутый» (очень похоже на базовый переключатель).SharePoint создает собственный JavaScript-код для обработки начального действия по щелчку, который затем расширяет область страницы и динамически записывает новое содержимое в эту область.Проблема в том, что jQuery не может получить доступ к новому контенту сразу после щелчка (он должен завершить загрузку).Я думаю добавить 2-ю функцию jQuery click к ссылке переключения и как-то подождать, пока новый контент будет добавлен, прежде чем что-либо еще произойдет, но я не уверен, как определить, когда загрузка динамического контента завершится ...

        //bind a 2nd additional onclick handler via jquery to these items
        $('td.ms-gb').children('a').click(function() 
            { 
                //give the clicked item a border for visual identification
                $(this).css("border","1px solid cyan");

                //delay this function until the sharepoint onclick handler finishes loading new content
                $('TD.ms-vb-icon').children('a').each(function(index) 
                   {
                        //give each item a border for visual identification 
                        $(this).css("border","1px solid red");
                        //perform more jquery on each item

                   }
                );         

            }
        ); 

Ответы [ 3 ]

1 голос
/ 26 октября 2011

Общепринятым методом решения подобных проблем является использование

setTimeout (function, timeoutInMs)

и попробуйте найти новое содержимое в функции, если не удалось, перезапустите тайм-аут, пока не найдете содержимое

Вот jsFiddle для иллюстрации: http://jsfiddle.net/Dhww2/

0 голосов
/ 26 октября 2011

Что вы собираетесь делать с загруженным контентом? Просто стиль и поймать еще один клик?

В этом случае используйте таблицы стилей для пользовательского стиля и функцию live jQuery для захвата (щелчка) событий других загруженных элементов.

Обновление для комментария

$('TD.ms-vb-icon a').live('click', function(ev) {
    $(this).attr('name','value');
}

Может не работать, если ваш код отслеживания кликов зарегистрирован ранее. Если это так, попробуйте с mouseover событие.

0 голосов
/ 26 октября 2011

Единственное, о чем я могу думать, это установить другой обработчик кликов, который регистрируется с $.ajaxSuccess() http://api.jquery.com/ajaxSuccess/ и отвечает после того, как первый запрос AJAX (после клика) завершается

Это хакерство, но если код, извлекающий динамическое содержимое, не имеет обратного вызова, вариантов не так много.

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