У меня есть код js
var shown = true; var parent = document.querySelector('.parent'); var child = document.querySelector('.child'); parent.addEventListener('mouseenter', function(){ child.style.opacity = shown ? 0 : 1; shown = !shown; });
js
относится к следующему css
* { margin: 0; padding: 0; } .parent { width: 100%; margin: 10px auto; position: relative; } .child { position: absolute; top: 0; width: 100%; height: 100%; display: block; overflow: hidden; transition: opacity 0.5s linear; } p { padding: 1em; }
и html
:
<div class="parent"> <img src="http://img.ruphp.com/javascript/bigstock-Test-word-on-white-keyboard-27134336.jpg" alt="" width="500px" height="auto" /> <div class="child"> <img src="http://maui.hawaii.edu/tlc/wp-content/uploads/sites/53/2013/11/testing.jpg" alt="" width="500px" height="auto" /> </div> </div>
Проблема в том, что я использую этот код для определенной страницы , а не для всего сайта, и он отлично работает, за исключением того факта, что на любой другой странице ( Home и т. Д.) Я получаю сообщение об ошибке, .parent
на .parent
элемента .parent
. Ничего необычного, пока я не нуждаюсь в нем на этой странице.
Uncaught TypeError: Cannot read property 'addEventListener' of null(anonymous function) @ shomz.js:6
Если это помогает, в этот момент код js
определенный как shomz.js
, регистрируется следующим образом:
... // Main Scripts function register_js() { if (!is_admin()) { $url_prefix = is_ssl() ? 'https:' : 'http:'; // Register wp_register_script('shomz', THB_THEME_ROOT . '/assets/js/plugins/shomz.js', 'jquery', null, TRUE); // Enqueue wp_enqueue_script('shomz'); wp_localize_script( 'app', 'themeajax', array( 'url' => admin_url( 'admin-ajax.php' ) ) ); } } ...
На этом этапе, чтобы избежать определения .parent/.child
для каждой отдельной страницы, мне было интересно, есть ли возможность зарегистрировать js
в файле script-calls.php
, будучи активным только для определенной страницы (s ) по id, например?
Просто заверните вызов сценария в очередь вызова функции с условием if, проверяющим, совпадает ли идентификатор текущей страницы с идентификатором той стороны, на которой вы хотите, чтобы скрипт был установлен в очередь или нет.
// Main Scripts function register_js() { if (!is_admin()) { $url_prefix = is_ssl() ? 'https:' : 'http:'; /* Get id of current page*/ $page_id = get_queried_object_id(); /* Compare the desired page's id with the current page's id, if they match, enqueue shomz*/ if(YOUR_ID == $page_id){ wp_register_script('shomz', THB_THEME_ROOT . '/assets/js/plugins/shomz.js', 'jquery', null, TRUE); wp_enqueue_script('shomz'); } wp_localize_script( 'app', 'themeajax', array( 'url' => admin_url( 'admin-ajax.php' ) ) ); } }