Javascript-форум (https://javascript.ru/forum/)
-   Библиотеки/Тулкиты/Фреймворки (https://javascript.ru/forum/library-toolkit-framework/)
-   -   Как не из DOM элемента вытянуть значение атрибута title? (https://javascript.ru/forum/library-toolkit-framework/76412-kak-ne-iz-dom-ehlementa-vytyanut-znachenie-atributa-title.html)

giwuf 09.01.2019 19:18

Почему атрибут элемента отображается с запаздыванием (при 2ой итерации показывается
 
Есть таблица wpDataTables с фильтром select с выбором по городам.

Хочу в переменной получать название городов для последующего вывода на странице, но сталкиваюсь с невозможностью получить атрибут элемента title в силу того, что плагин при поиске посылает ajax запрос на сервер и возвращает данные и потому не работает DOM (в консоли видно, а в коде страницы нет), хотя сам html код кнопки я отлавливаю таким образом:

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];
    var title = city.getAttribute("title");
    console.log(newcity,city,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>


При
var city = jQuery('#table_1_1_filter button.dropdown-toggle');


Получаю в консоли
a.fn.init [button.btn.dropdown-toggle.btn-default, selector: "#table_1_1_filter button.dropdown-toggle", prevObject: n.fn.init(1), context: document]


Но, ничего не могу сделать с этой переменной, методы find, text, html, innerHTML не хотят с ней работать, а при преобразовании в toString() получаю в консоли [object HTMLButtonElement]. Как можно решить?

UPD: Вот что удалось обнаружить - код
var newcity = jQuery('#table_1_1_filter_sections button.dropdown-toggle').attr('title');


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

Какие могут быть мысли?

giwuf 09.01.2019 22:44

Не нашел ничего лучше, как установить задержку на 0,5сек. По крайней мере работает


Не нашел ничего лучше, как установить задержку на 0,5сек. По крайней мере работает

setTimeout(function() { 
city = jQuery('#table_1_1_filter button.dropdown-toggle').attr("title"); jQuery('.city').text("г. "+city); }, 500);


Часовой пояс GMT +3, время: 00:14.