Доступ к DOM Accessizer – jQuery

Как я могу получить доступ к настройщику с помощью DOM?
Я объясню, что я должен быть ясен.
Недавно я изучил основы jQuery, работая над плагином.
Итак, пока в предварительном предпросмотре, если я слушаю DOM,
Я могу получить ответ на любой элемент вне панели настройки,
но я не могу получить доступ к настройщику DOM, ответ всегда 0!
Например, в режиме предварительного просмотра:

alert($('#sidebar').length); 

вернет ответ 1, так как у меня есть область виджетов, у которой боковая панель как id.
Но, хотя в предварительном просмотре customizer, если я пытаюсь добраться до панели, раздела, элемента управления или даже самого настраивающего, ничего не происходит, ответ всегда равен 0!
Например :

 alert($('.wp-customize').length); 

вернет 0! .wp-customize – это «самый высокий» класс в настройке

Надеюсь, что мой вопрос ясен и кто-то может объяснить мне причину и помочь мне получить доступ к настройщику с помощью jQuery.

Большое спасибо за вашу помощь.

Solutions Collecting From Web of "Доступ к DOM Accessizer – jQuery"

Предварительный просмотр пользовательских настроек находится в другом окне, чем окно, содержащее элементы настройки. В частности, предварительный просмотр настроек содержится внутри iframe . Вот почему вы не можете напрямую использовать jQuery для выбора элементов. Один из способов обойти это – использовать parent.jQuery из предварительного просмотра, но это не рекомендуется, так как предварительный просмотр настроек может фактически полностью находиться в отдельном домене, и такой вызов будет нарушать политику одного и того же происхождения в браузере. Поэтому, если вы хотите взаимодействовать с элементами управления из предварительного просмотра, вам нужно передать сообщения из предварительного просмотра в панель. Примеры этого можно увидеть в основном на самом деле, в частности, в customize-selective-refresh.js где он отправляет сообщение управления focus-control-for-setting а затем в customize-controls.js где оно получает это сообщение. Вот отдельный пример и как получить корневой контейнер jQuery для данного элемента управления, когда вы наводите указатель мыши на название сайта.

Внесите этот сценарий в действие wp_enqueue_scripts если is_customize_preview() , и пусть у него есть сценарий customize-preview как его зависимость:

 // customize-preview-example.js (function( api, $ ) { api.bind( 'preview-ready', function() { $( '.site-title' ).on( 'mouseover', function() { api.preview.send( 'site-title-mousedover', 'some optional message value' ); } ); } ); }) ( wp.customize, jQuery ); 

И затем этот скрипт, который запускается в окне управления ( parent ), которое зависит от customize-controls и находится в очереди в действии customize_controls_enqueue_scripts :

 // customize-controls-example.js (function( api ) { api.bind( 'ready', function() { // Wait for the site title control to be added. api.control( 'blogname', function( siteTitleControl ) { api.previewer.bind( 'site-title-mousedover', function( message ) { console.info( 'Message sent from preview:', message ); console.info( 'The jQuery container element for the site title control:', siteTitleControl.container ); } ); } ); } ); }) ( wp.customize ); 

При этом следует опасаться использования jQuery для управления элементами управления. Элементы управления настраиваются в соответствии с настройками адаптера. Если вы хотите внести изменения в значение, показанное на входе данного элемента управления, вам необходимо изменить связанные с ним настройки, а не напрямую изменять вход элемента управления. Кроме того, если вы хотите скрыть элемент управления, то то, что вы ищете, – это active_callback на добавленном элементе управления.