У меня есть веб-страница со столом, сгенерированным с помощью datatables jQuery plug-in. Код для таблицы выглядит следующим образом:найти элемент, сгенерированный другим скриптом
<div id="countdown" style="display: none;">Countdown <span id="counter"></span></div>
<table id="zones">
<thead>
<tr>
<th>Column Header 1</th>
<th>Column Header 2</th>
</tr>
</thead>
<tbody></tbody>
</table>
Так что все в <tbody>
добавляется сценарий. Я вижу полный контент таблицы в инструментах Chrome dev, но не в источнике страницы.
То, что я хочу сделать, это проверить, если какой-либо элемент внутри таблицы имеет класс icon-refresh
и если да, огонь мой JS код, который выглядит следующим образом:
$(document).ready(function() {
function countdown(elementName, minutes, seconds)
{
var element, endTime, hours, mins, msLeft, time;
function twoDigits(n)
{
return (n <= 9 ? "0" + n : n);
}
function updateTimer()
{
msLeft = endTime - (+new Date);
if (msLeft < 1000) {
setTimeout(function() {
window.location.reload(true);
}, 5000);
} else {
time = new Date(msLeft);
hours = time.getUTCHours();
mins = time.getUTCMinutes();
element.innerHTML = (hours ? hours + ':' + twoDigits(mins) : mins) + ':' + twoDigits(time.getUTCSeconds());
setTimeout(updateTimer, time.getUTCMilliseconds() + 500);
}
}
element = document.getElementById(elementName);
endTime = (+new Date) + 1000 * (60*minutes + seconds) + 500;
updateTimer();
}
if ($('table').find('.icon-refresh')) {
countdown('counter', 0, 60 - new Date().getSeconds());
document.getElementById('countdown').style.display = 'block';
}
});
Как вы можете видеть, что, как предполагается, обратный отсчет времени до следующая полная минутка обновить страницу. Проблема заключается в кодексе $('table').find('.icon-refresh')
, это всегда верно, поскольку даже если ни один из элементов не имеет класса icon-refresh
, отображается обратный отсчет. Я также пробовал $('.icon-refresh').length
, но этот элемент не нашел. Есть ли простое решение?
Также во-вторых, поскольку в данных есть разбиение на страницы, условие необходимо проверять каждый раз, когда пользователь нажимает на элемент <a tabindex="0" class="paginate_button"></a>
.
Заранее благодарим за любую помощь!
'$ ('table'). find ('. icon-refresh')' возвращает массив. Он никогда не вернет «ложь». Пустой массив считается недействительным, поэтому верно. Вы хотите проверить '$ ('table'). Find ('. Icon-refresh'). Length'. Я считаю, что вы ищете «.icon-refresh» до того, как они сгенерированы, это слишком рано. Подождите, пока они будут сгенерированы первым скриптом, а затем запустите селектор. –
Хорошо, но как ждать создания сценария datatables? Я попробовал '$ (window) .load (function() ...' вместо '$ (document) .ready (function()', но без успеха – user3209792
Это ждет, когда DOM будет готов. что-нибудь о выполнении скрипта. После этого ваша таблица создается. Добавьте строку к сценарию, который генерирует таблицу, вызовите функцию, которая выберет созданный материал. –