Как выбрать элемент вне DOM без события? - PullRequest
0 голосов
/ 28 июня 2018

Мне нужно выполнить:

$('.btn-toolbar').toolbar({
    content: '#toolbar-options'
});

Элементы с .btn-toolbar классом не находятся в DOM , потому что добавляются после и ajax-запроса. Как выбрать элементы вне DOM? .

В другом подобном вопросе он решается с делегатским событием, но у меня нет какого-либо события для управления им, мне не нужно включать клик по нему, зависание или любое другое событие. Я просто хочу выполнить функцию панели инструментов для всех элементов с btn-toolbar, но $('.btn-toolbar') сейчас пусто.

Ответы [ 2 ]

0 голосов
/ 28 июня 2018

Вы можете выполнить код для вызова / завершения вызова ajax после того, как он поместит элементы класса .btn-toolbar в DOM.

$.ajax({
....
}).done(function() {
  // Places/Inserts the .btn-toolbar elements in the page.
  $('.btn-toolbar').toolbar({
    content: '#toolbar-options'
  });
});

Если вызов ajax выполняется каким-либо другим сценарием, когда вы не можете (например, минимизированным сценарием какого-либо другого плагина или сценарием с другого сайта) ввести свой код, тем не менее вы можете вмешаться в вызов ajax и прикрепить свой код для запуска после. Вы можете использовать jQuery.ajaxSetup () для настройки вызовов ajax, сделанных на вашем сайте.

Например, вы можете запускать свой код всякий раз, когда ajax-вызов завершается успешно:

$( document ).ajaxSuccess(function() {
  $('.btn-toolbar').toolbar({
    content: '#toolbar-options'
  });
});
0 голосов
/ 28 июня 2018

Если элемент отсутствует в каком-либо поддереве элемента (т.е. не является дочерним элементом какого-либо другого элемента), и вы не держите ссылку на него (равно как и никакой другой объект, на который он ссылается), он фактически исчезает и подвергается сборка мусора.

Если вы держите ссылку на нее, вам нужно будет использовать эту ссылку. Если это дочерний элемент какого-либо другого элемента (независимо от того, находится ли этот элемент в дереве DOM), вам нужно будет включить этот родительский элемент в ваш выбор, что означает, что вам потребуется по крайней мере ссылка на этот родительский элемент. В противном случае у вас нет другого способа достичь этого.

Если элемент на самом деле еще не существует, и вы просто говорите «вызовите эту команду для любого .btn-toolbar при загрузке на страницу», то вам нужен наблюдатель мутации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...