2016-02-22 2 views
1

У меня есть Ajax Loaded Div на моей странице, и внутри этого div плагин JQuery загружает мою электронную таблицу Google. Мне нужно добавить «прослушивание событий», чтобы обнаружить, когда эта таблица загружена, но есть проблема с непредсказуемым временем загрузки и тот факт, что событие INSIDE моего div (с внешним содержимым html), насколько мне известно, не может быть прослушан в моем «родительском» окне. Между прочим, я пробовал много способов сделать это.Событие вызова после скрипта во внешнем html, загруженном Ajax

Я отправлю свой код, но я не думаю, что он может помочь. Я могу сказать: высота моего div изменяется при загрузке содержимого. Функция Callback не может работать в этом случае, потому что мой скрипт (внутри div) получает таблицу только после загрузки страницы.

index.html

$.ajax({ 
    url : "test/index.html", 
    type : "get", 
    async: true, 
    success : function(result) { 
    $('.mailcontrol').html(result); 
    }, 
    error: function() { 
     alert("Error"); 
    } 
}); 

тест/index.html

<script type="text/javascript"> 
$('#dat').sheetrock({ 
    url: 'https://docs.google.com/spreadsheets/ssid'}); 
</script> 

Любой Ideia о каком-то событии, слушая в моем случае? Благодаря!

EDIT:

jrummell ответ дал мне Ideia игнорировать внешний HTML-файл с помощью плагина внутри одной и той же страницы, так что я мог бы использовать функцию обратного вызова «гипсокартон», как это было предложено Андре.

Спасибо за ответы!

Новый код:

$("#target2").click(function() { 
var script = document.createElement('script'); 
script.type = 'text/javascript'; 
script.src = 'sheetrock.min.js'; 
$("#dat").append(script); 
$('#dat').sheetrock({ 
    url: 'https://docs.google.com/spreadsheets', 
    callback: function() { 
    } 
    }); 
}); 

ответ

1

Try инициализации работы с электронными таблицами плагин после загрузки содержимого:

$.ajax({ 
    url : "test/index.html", 
    type : "get", 
    async: true, 
    success : function(result) { 
     $('.mailcontrol').html(result); 
     $('#dat').sheetrock({ 
      url: 'https://docs.google.com/spreadsheets/ssid'}); 
    }, 
    error: function() { 
     alert("Error"); 
    } 
}); 
+0

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

1

Вы можете использовать Jquery на() прослушивания событий, например:

$('.mailcontrol').on('eventName', '#dat', callbackFunction);

Параметр "селектор" является строкой селектор фильтровать потомки выбранных элементов, которые запускают событие. В вашем случае «#dat». Я предлагаю использовать «resize» как eventName.

Ссылка: http://api.jquery.com/on/

+0

Спасибо, Андре! Я не знаю, какое событие я могу выбрать для обнаружения загрузки электронных таблиц, и это проблема. –

+1

Возможно, вы можете использовать собственную функцию обратного вызова leafrock, например: https://github.com/chriszarate/sheetrock#callback –

1

Вы пробовали оригинальный гипсокартон обратного вызова?

$('#dat').sheetrock({ 
 
    url: 'https://docs.google.com/spreadsheets/ssid', 
 
    callback: function() { 
 
     //trigger event to be caught 
 
    } 
 
});

Ссылка: https://github.com/chriszarate/sheetrock#callback

+0

Спасибо, снова! Я пытаюсь переместить плагин sheetrock в свой индекс, игнорируя тест/индекс, но плагин не может распознать мой элемент –

Смежные вопросы