переустанавливать jquery после постбэков iframe с использованием innerhtml - PullRequest
0 голосов
/ 09 ноября 2011

ОВЗ

Я пробую что-то вроде jquery. просто, в основном: это страница с таблицей. У меня есть Simpe JQuery, который создает эффект на TR для onmouseover / Out и переключения при нажатии на строку. щелкнув по строке, ТАКЖЕ запускает http-запрос в iframe, который генерирует две новые таблицы и записывает их обратно в родительское окно, используя JavaScript-код innerHTML.

что новые таблицы, созданные внутри iframe, используют тот же материал jquery для эффекта onmouseover / out. но это не работает, потому что я предполагаю, что $ (document) .ready (function () уже давно запущен и не «обрабатывал» вновь вставленные таблицы.

как я могу перезапустить $ (document) .ready (function () изнутри iframe? Просто запись javascript обратно к родителю не работает, так как он не выполняется (также тест с простым «alert») Я уже поместил весь материал инициализации jquery в отдельную функцию:

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

function initjquery(){
        $("#jqtbody tr").bind( "mouseover", function(e){
            $(this).toggleClass("highlighted");
        });
        $("#jqtbody tr").bind( "mouseout", function(e){
            $(this).toggleClass("highlighted");
        });
    }

см. Изображение для некоторой визуальной «помощи» (извините, я новичок, мне пока не разрешено вставлять изображения здесь) http://beta2.nextron.ch/temp/unibas.jpg

спасибо за любую помощь!

Lukas

1 Ответ

0 голосов
/ 09 ноября 2011

Попробуйте сделать следующее:

  • 1) создать заполнители для хранения динамических таблиц, когда они запрашиваются
  • 2) при запуске запроса http, обязательно вернитеТОЛЬКО полный html таблицы (без необходимости iframes)
  • 3) когда запрос поступает на страницу (html источник таблицы), поместите эту таблицу в заполнитель с помощью $ (placeholder) .append (htmlOfTheDynamicTable)

Используя этот подход и метод append (), jQuery автоматически загружает также все события для этих элементов.Если вы используете прямой innerHTML (или, в стиле jQuery, с $ (target) .html (html)), события, которые «должны» быть прикреплены к динамически загружаемому HTML, не будут работать.

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