У меня есть сайт с страницей index.php с AJAX Live Search, который соединяется с базой данных и возвращает результаты. Один из результатов тезисов:
<div id="searchlinktovideo">Video</div>
У меня также есть код на странице index.php, чтобы попытаться сделать что-то с приведенным выше кодом, в этом случае для анимации на странице, когда пользователь нажмет на него:
$(document).ready(function () {
$("#searchlinktovideo").click(function () {
$("#searchpage").animate({
'left': '-486px'
}, 200, function () {
$("#homepage").animate({
'left': '-486px'
}, 200, function () {
$("#videopage").animate({
'left': '0px'
}, 200);
});
});
});
});
Он не работает, я думаю, что это может быть связано с Html DOM, но я не знаю, с чего начать, чтобы начать решать проблему.
На данный момент вы можете найти код по адресу http://www.squbo.com (нажмите "Поиск" и введите "Видео" - РЕЗУЛЬТАТ РЕЗУЛЬТАТОВ, КАК HTML, НО ЗДОРОВЬЕ НЕ РАБОТАЕТ НА ЭТО))
Если <div id="searchlinktovideo">Video</div>
добавляется динамически (что похоже на то, что оно есть), то, вероятно, ваша проблема заключается в том, что вы пытаетесь установить обработчик событий до того, как элемент действительно находится на странице. Это ничего не делает, потому что элемент не может быть найден, поэтому никакой обработчик событий не установлен.
Есть несколько возможных решений.
Для делегированной обработки событий вы должны использовать следующее:
$(document).on("click", "#searchlinktovideo", function () {...});
В идеале вместо $(document)
вы должны использовать селектор для статического родителя (родительский div, который не добавляется динамически) ближе к #searchlinktovideo
.
Вы видите, что jquery ищет searchlinktovideo
как только страница готова, но запрос ajax завершается после того, как страница готова, поэтому, когда она ищет, она ничего не находит. Вы должны использовать
$( document ).ajaxComplete(function() {
$("#searchlinktovideo").click(function () {
..
..
..
});
});