@ligisayan

Почему атрибут элемента отображается с запаздыванием (при 2ой итерации показывается 1ый вариант)?

Всем привет! Есть сайт на wordpress и таблица wpDataTables с фильтром select с выбором по городам.
Хочу в переменной получать название городов для последующего вывода на странице, но почему-то сталкиваюсь с невозможностью получить атрибут элемента title на первой итерации.

custom.js
jQuery.noConflict();
jQuery(window).load(function(){
  wpDataTables.table_1.addOnDrawCallback(
  function(){
    var newcity = jQuery('#table_1_1_filter_sections button.dropdown-toggle').attr('title');
    var city = jQuery('#table_1_1_filter button.dropdown-toggle')[0];
    console.log(newcity,city);
});


UPD: Вот что удалось обнаружить - код

var newcity = jQuery('#table_1_1_filter_sections button.dropdown-toggle').attr('title');


работает, но запаздывает с итерацией, т.е. при первом выборе города считывает пустоту, а при выборе следующего - отображает предыдущее значение и так далее.

А забавное то, что city уже сразу в консоли вот в таком виде.

<button type="button" class="btn dropdown-toggle btn-default" 
data-toggle="dropdown" role="button" title="Кемерово" aria-expanded="false">
<span class="filter-option pull-left">Кемерово</span>&nbsp;
<span class="bs-caret"><span class="caret"></span></span>
</button>


Какие могут быть мысли?
  • Вопрос задан
  • 79 просмотров
Пригласить эксперта
Ответы на вопрос 2
beliyadm
@beliyadm
Плагин (судя по демо) при поиске посылает ajax запрос на сервер и возвращает данные, потому и не работает (DOM то ведь новый)
Попробуйте заменить
jQuery(window).load(function(){
на
jQuery(window).on('load', function(){
Ответ написан
@ligisayan Автор вопроса
Не нашел ничего лучше, как установить задержку на 0,5сек. По крайней мере работает
setTimeout(function() { 
            city = jQuery('#table_1_1_filter button.dropdown-toggle').attr("title"); jQuery('.city').text("г. "+city); }, 500);
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы