Или вы можете просто использовать OleDbDataAdapter для получения данных из Excel
Событие «DOM изменено» не существует, и его создание требует затрат браузера. Лучше всего использовать обратный вызов для метода загрузки, чтобы запускать необходимые функции.
$('#foobar').load('myurl.html',function() {
var mydiv = $("#mydiv");
});
Вы это уже видели: http://plugins.jquery.com/project/livequery/
Например (расширяя мой комментарий выше) это из документации jQuery.
$.ajax({
url: 'ajax/test.html',
success: function(data) {
$('#mydiv').html(data);
alert('Load was performed.');
}
});
замените предупреждение кодом, который вы хотите запустить / действие вы хотите выполнить
Другой способ сделать это - использовать trigger ()
для запуска ваше собственное событие (назовем его content_loaded
). load ()
принимает функцию обратного вызова, которую она вызывает по завершении:
function callback_function(responseText, textStatus, XMLHttpRequest) {
//if we have valid data ...
trigger("content_loaded");
}
$("your_selector").load("your_url", callback_function);
А затем просто настройте прослушиватель событий и запускайте его всякий раз, когда ваше событие запускается.
$("your_selector").bind("content_loaded", your_results_loaded_function);
Вы не можете использовать .live ()
с событием «load». См. Нерабочий пример того, что вы хотели бы сделать здесь: http://www.jsfiddle.net/S5L6Q/
Один из подходов - опрос с таймером:
var length = $(".mydiv").length;
setInterval(function () {
if ($(".mydiv").length > length) {
length = $(".mydiv").length;
// .. some code
}
}, 100);
Это будет проверять каждый 1/10 секунды, чтобы увидеть, были ли добавлены некоторые из них. Это может быть очень дорого в зависимости от сложности вашего селектора.
Другой вариант - перехватить все ваши вызовы AJAX через общую оболочку, которая может проверять длину и при необходимости выполнять ваш код, а затем выполнять предоставленный обратный вызов.
function myAjax(url, data, callback) {
function fullCallback(data) {
if ($(".mydiv").length > 0) {
//... your code...
}
if (callback) {
callback();
}
}
$.get(url, data, fullCallback);
};
Второй, вероятно, лучший маршрут, но первый может быть самым простым.
Обычно я обрабатываю любые действия, которые происходят при загрузке элемента, либо как часть механизма обратного вызова AJAX, либо как часть включенного обработчика ready
в возвращенном HTML-коде обратного вызова AJAX. Последний хорошо работает, когда вы хотите загрузить частичное представление на страницу и хотите сохранить код с самим частичным представлением.
Частичное представление:
<div id="myDiv">
...
</div>
<script type="text/javascript">
$(function() {
$('#myDiv').somePlugin( ... );
});
</script>
Использование обратного вызова
$.ajax({
url: '/example.com/code.php',
success: function(html) {
var container = $('#container').html(html);
$('#myDiv',container).somePlugin( ... );
}
});
Что создает #mydiv? Вы должны иметь возможность просто бросить //doSomething прямо рядом с функцией, которая создает #mydiv.
$.post("myURL.html", function(data){
$("#mydiv").html(data);
//doSomething
В конце концов, #mydiv не создает сам себя. Как бы вы ни создавали #mydiv, используйте ту же функцию, чтобы делать все, что вам нужно.