#jquery #wordpress
#jquery #wordpress
Вопрос:
** Редактировать — я удалил код из своего заголовочного файла и попробовал инструкции из https://digwp.com/2009/06/including-jquery-in-wordpress-the-right-way /
Я добавил этот код в свой файл функций
function shapeSpace_include_custom_jquery() {
wp_deregister_script('jquery');
wp_enqueue_script('jquery', 'https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js', array(), null, true);
}
add_action('wp_enqueue_scripts', 'shapeSpace_include_custom_jquery');
Я вижу успешный запрос GET в консоли на CDN. Я также попытался изменить ссылку на https://code.jquery.com/jquery-3.5.1.js с официального сайта jquery
У меня есть файл с именем main.js с помощью этого кода —
(function ($) {
console.log("working");
$(".about-text").click(function () {
alert("test")
});
})(jQuery);
Отображается «рабочий» журнал консоли, поэтому он знает, что он загружен, но обработчик jQuery для клика этого не делает. Я также пробовал hover (), и это не работает, также пробовал просто —
$(".about-text).hide()
Это div, который я тестирую —
<div class="about-text">
<h2><?php the_title(); ?></h2>
<h3><?php the_content(); ?></h3>
</div>
Я также добавил
<div id="target">
Click here
</div>
и
$( "#target" ).click(function() {
alert( "Handler for .click() called." );
});
(пример из jquery.com сайт), и он не работает.
Что я здесь делаю не так?
Комментарии:
1. есть ли у вас какой-либо блокировщик контента, который блокирует
alert()
? попробуйтеconsole.log
вместо этого, а также попробуйте с$("body").on("click",".about-text",function(){
2. Пробовал, все еще не работает
3. попробуйте с
jQuery(document).ready(function($) { $( "#target" ).click(function() { alert( "Handler for .click() called." ); }); }
4. Это сработало! Спасибо. Вы знаете причину, почему?
5. добавлено в мой ответ 😉
Ответ №1:
в WordPress jQuery загружается в режиме без конфликтов, поэтому вы не можете использовать $
его подобным образом, вместо этого вы можете использовать jQuery, как показано ниже, затем вы можете использовать $
jQuery(document).ready(function($) {
$( "#target" ).click(function() {
alert( "Handler for .click() called." );
});
}
или у вас есть другой вариант использования no conflict, например
var j = jQuery.noConflict();
j(document).ready(function() {
j( "#target" ).click(function() {
alert( "Handler for .click() called." );
});
}