2015-05-20 5 views
0

У меня есть веб-страница со столом, сгенерированным с помощью 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>.

Заранее благодарим за любую помощь!

+2

'$ ('table'). find ('. icon-refresh')' возвращает массив. Он никогда не вернет «ложь». Пустой массив считается недействительным, поэтому верно. Вы хотите проверить '$ ('table'). Find ('. Icon-refresh'). Length'. Я считаю, что вы ищете «.icon-refresh» до того, как они сгенерированы, это слишком рано. Подождите, пока они будут сгенерированы первым скриптом, а затем запустите селектор. –

+0

Хорошо, но как ждать создания сценария datatables? Я попробовал '$ (window) .load (function() ...' вместо '$ (document) .ready (function()', но без успеха – user3209792

+0

Это ждет, когда DOM будет готов. что-нибудь о выполнении скрипта. После этого ваша таблица создается. Добавьте строку к сценарию, который генерирует таблицу, вызовите функцию, которая выберет созданный материал. –

ответ

0

Редактировать, неправильно понимать ОП.

Второй скрипт загружается после того, как первый уже выполнил свой тест. Таким образом, .length возвращает 0, потому что в этот момент .icon-refresh не существует.

OnLoad может использоваться на бирках непосредственно, например, теги

запустить свой отсчет сценарий после того, как таблицы были загружены на этой странице. например: <script onload="myScript" src="blabla" type="blabla>

+0

Это не решает, почему '$ ('.icon-refresh'). length' всегда 0. –

+0

Также я, возможно, неправильно понял вопрос OPs, он просто хочет узнать, есть ли какие-либо экземпляры этого класса на странице. Я возьму нисходящие ни минуты – NachoDawg

+0

=) Никто downvoted yo u еще. Проблема OP состоит в том, что он выбирает сгенерированный материал, но выбор всегда возвращает 0. Поэтому я считаю, что он выбирает элементы _before_, которые они генерируют. –

Смежные вопросы