У меня проблема с тем, что я пытаюсь загрузить html на страницу, используя jQuery.
Сам контент прекрасно загружается, но я пытаюсь сделать его «перетаскиваемым» с помощью jquery ui.
Проблема, с которой я столкнулся, заключается в том, что когда я вызываю функцию, чтобы сделать контент перетаскиваемым, он еще не загружается, поэтому ничего не делается перетаскиваемым.
Я попытался, с некоторым успехом, добавить setTimeout перед вызовом функции, это заставило его работать, но не так, как мне бы хотелось. SetTimeout не будет работать на медленных интернет-соединениях или когда сайт загружается медленно, так как он слишком низкий. Но если я установлю его слишком высоко, то будет долгое ожидание, прежде чем контент станет подвижным.
Мне было интересно, есть ли способ определить, загружен ли контент перед вызовом функции?
Мой код:
$(".naviitem").click(function(){ //When icon is clicked
var i = $(this).attr('id'); //Get id of clicked icon
$.when(load(i)).then(makeDrag()); //Load page then call makeDrag (Doesn't function properly)
});
function load(i){
$.get('wnd/' + i + '.htm', {}, function(data) { //This all works
var $response = $('<div />').html(data);
var $load = $response.find('#p' + i);
$('#page').append($load);
},'html');
}
function makeDrag(){
//does something here
}