Не работает toggleClass при асинхронной загрузке Java Script на мобильных устройствах

Arther
На сайте с 03.09.2009
Offline
91
2351

Подключаю Асинхронно java script

1. <script async src="http://site.com/resource.js"></script>

2. <script>function init() {

$('a').addClass('ajax');

}</script>

<script src="/jquery.js" async onload="init()"></script>

Потом идет

<script type="text/javascript">

jQuery(function($) {

$( ".togle" ).on( "click", function() {

$("#top").toggle( "slow", function() {

});

$(this).toggleClass( "newClass");

});

})

</script>

Подключаю к меню

<div class="togle">Menu</div>

<div class="menushka">

<?php $args = array( // arguments to display top menu, menu must be created in admin panel for arguments working

'theme_location' => 'top', // menu identificator, defined of register_nav_menus() function in function.php

'container'=> 'main_menu', // parent tag of ul, false is nothing

'menu_class' => 'menu', // class of ul

'menu_id' => 'top', // id attribute of ul

);

wp_nav_menu($args); // display top menu

?>

</div>

Как сделать так что бы java скрипт подгружался асинхронно (или загнать его в футер) и <div class="togle">Menu</div> начала реагировать на нажатия ?

werty1001
На сайте с 30.03.2008
Offline
82
#1

Попробуйте так:

$(document).ready(function() {

$('body').on('click','.togle',function(){
$(this).toggleClass('newClass');
});
});
Магазин аккаунтов с балансом Litres,DNS,Ozon,Rotapost и еще 50+ других сервисов тут - vk.cc/7QK0Sk
dkameleon
На сайте с 09.12.2005
Offline
386
#2
Arther:
Как сделать так что бы java скрипт подгружался асинхронно (или загнать его в футер) и <div class="togle">Menu</div> начала реагировать на нажатия ?

вы джкваери грузите асинхроно, а

Arther:
jQuery(function($) {

вызываете в процессе загрузки документа, не дожидаясь подгрузки необходимых библиотек.

вестимо вешать онлоад ивент и в нем уже подключать ивенты на всё остальное и выполнять вызовы библиотеки.

Arther:
$('a').addClass('ajax');

тут же проблем нет?

Дизайн интерьера (http://balabukha.com/)
Arther
На сайте с 03.09.2009
Offline
91
#3
werty1001:
Попробуйте так:
$(document).ready(function() {

$('body').on('click','.togle',function(){
$(this).toggleClass('newClass');
});
});

Не сработало

---------- Добавлено 09.01.2016 в 19:42 ----------

dkameleon:
вы джкваери грузите асинхроно, а

вызываете в процессе загрузки документа, не дожидаясь подгрузки необходимых библиотек.

вестимо вешать онлоад ивент и в нем уже подключать ивенты на всё остальное и выполнять вызовы библиотеки.


тут же проблем нет?

Сделать вот так ?



<script>function init() {
$('a').addClass('ajax');
}</script>
<script src="/jquery.js" async onload="init()">
jQuery(function($) {
$( ".togle" ).on( "click", function() {
$("#top").toggle( "slow", function() {

});
$(this).toggleClass( "newClass");


});
})
</script>

dkameleon
На сайте с 09.12.2005
Offline
386
#4

лучше как-то так:

<script src="/jquery.js" async onload="init2()">
function init2() {
$( ".togle" ).on( "click", function() {
$("#top").toggle( "slow", function() {
});
$(this).toggleClass( "newClass");
});
}
</script>
Arther
На сайте с 03.09.2009
Offline
91
#5
dkameleon:
лучше как-то так:

<script src="/jquery.js" async onload="init2()">

function init2() {
$( ".togle" ).on( "click", function() {
$("#top").toggle( "slow", function() {
});
$(this).toggleClass( "newClass");
});
}
</script>

Ноль реакции, js файл у меня base64 сжат, может из за этого ?

I2
На сайте с 07.03.2015
Offline
38
#6
dkameleon:
лучше как-то так:

<script src="/jquery.js" async onload="init2()">

function init2() {
$( ".togle" ).on( "click", function() {
$("#top").toggle( "slow", function() {
});
$(this).toggleClass( "newClass");
});
}
</script>

А это и не будет работать, так как нельзя в одном теге script подключать внешний файл и писать что то свое.

Качественная верстка PSD макетов (/ru/forum/974524)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий