Запуск JavaScript после загрузки AJAX
У меня есть небольшая функция javascript, которую я пытаюсь запустить после загрузки страницы через ajax-загрузку JQM. Теперь я видел другие посты, обсуждающие это, но не смог решить мою проблему. У меня изначально загружен скрипт, когда мой индекс загружается, думая, что он останется в голове после изменений DOM, но все равно ничего не делает. Вот сценарий.
$(function(){
var $product = $('#product'),
$imgs = $product.find(".child"),
imageTotal = $imgs.length - 1,
clicked = false,
widthStep = 20,
currPos,
currImg = 0,
lastImg = 0;
$imgs.bind('mousedown', function (e) {
e.preventDefault(); // prevent dragging images
})
.filter(':gt(0)').addClass('notseen');
$product.bind('mousedown touchstart', function (e) {
if (e.type == "touchstart") {
currPos = window.event.touches[0].pageX;
} else {
currPos = e.pageX;
}
clicked = true;
});
$(this)
.bind('mouseup touchend', function () {
clicked = false;
})
.bind('mousemove touchmove', function (e) {
if (clicked) {
var pageX;
if (e.type == "touchmove") {
pageX = window.event.targetTouches[0].pageX;
} else {
pageX = e.pageX;
}
widthStep = 20;
if (Math.abs(currPos - pageX) >= widthStep) {
if (currPos - pageX >= widthStep) {
currImg++;
if (currImg > imageTotal) {
currImg = 0;}
} else {
currImg--;
if (currImg < 1) {
currImg = imageTotal;
}
}
currPos = pageX;
$imgs.eq(lastImg).addClass('notseen');
$imgs.eq(currImg).removeClass('notseen');
lastImg = currImg;
// $obj.html('<img src="' + aImages[options.currImg] + '" />');
}
}
});
});
document.addEventListener('touchmove', function(e) { e.preventDefault(); }, false);// JavaScript Document
Я загружаю его, используя стандартные <script>
Теги, которые я знаю, это проблема, я просто не уверен, как ее решить.
Я использую Jquery Mobile 1.3 и Jquery 1.9.1
2 ответа
Если вы хотите загрузить что-либо для выполнения после загрузки страницы jQuery Mobile, вам нужно использовать соответствующее событие страницы jQuery Mobile, например pageshow
,
Вот пример:
$(document).on('pageshow', '#index', function(){
alert('Page loaded');
});
И вот рабочий пример: http://jsfiddle.net/Gajotres/tuJEm/
Вы должны поместить свой код в pageshow
событие. #index
должен быть идентификатором вашей страницы.
Если вы хотите узнать больше о событиях на странице jQuery Mobile, ознакомьтесь с этой статьей или найдите ее ЗДЕСЬ.
bind
не рекомендуется использование on
вместо.
Начиная с jQuery 1.7, метод.on() является предпочтительным методом для прикрепления обработчиков событий к документу. В более ранних версиях метод.bind() используется для присоединения обработчика событий непосредственно к элементам. Обработчики присоединяются к текущим выбранным элементам в объекте jQuery, поэтому эти элементы должны существовать в точке, где происходит вызов.bind(). Для более гибкой привязки событий см. Обсуждение делегирования событий в.on() или.delegate().