Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Прошу помощи. Выполнение по клику и при загрузке (https://javascript.ru/forum/misc/64224-proshu-pomoshhi-vypolnenie-po-kliku-i-pri-zagruzke.html)

Nikita21 28.07.2016 13:35

Прошу помощи. Выполнение по клику и при загрузке
 
Всем привет. Помогите, пожалуйста, новичку.
Хочу сделать, чтобы два блока удалялись в зависимости от табов, при этом, что бы это происходило при экране >=720px.

На данный момент сделал 2-х ступенчатые условия, где:
Если нет клика по элементу, то выполняется функция, если клик есть, то выполняется такая же, скопированная функция. Что-то мне подсказывает, что есть другой способ, но ситаксис плохо знаю. Помогите, пожалуйста.
<div id="event_tabs" style="display: block;">
<ul>
<li class="active"><a href="kino" data-id="kino" class="btn"></a>
</li><li class=""><a href="clubs" data-id="clubs" class="btn"></a>
</li><li class=""><a href="theater" data-id="theater" class="btn"></a>
</li><li class=""><a href="others" data-id="others" class="btn"></a></li>        
</ul>
</div>

<div id="bottom_afisha" class="clearfix"></div>
<div id="yandex_ad_afisha_123"></div>

var direct = jQuery('.direct_container_afisha')
var bottom = jQuery('#bottom_afisha')

if (jQuery(window).width() >= 720) {
  jQuery("#event_tabs li a").click(function() {
if (jQuery('#event_tabs li.active a').data( "id" ) == "kino"){
direct.detach(); 
bottom.live();}
else if (jQuery('#event_tabs li.active a').data( "id" ) == "others") {
  direct.live();
bottom.detach();}
})}

else if (jQuery(window).width() >= 720){
if (jQuery('#event_tabs li.active a').data( "id" ) == "kino"){ 
  direct.detach(); 
  bottom.live();}
else if (jQuery('#event_tabs li.active a').data( "id" ) == "others") {
  direct.live();
  bottom.detach();}}

jorjsmile 28.07.2016 14:11

Простите, слабо понимаю что значит
Цитата:

Если нет клика по элементу, то выполняется функция
Javascript - событийно ориенитрованный ( по большей части ). если нет события - ничего не будет выполняться.
Цитата:

if(jQuery("#event_tabs li a").click)
условие выполняется всегда, поскольку вы проверяется есть ли свойство click в объекте jQuery, а оно там есть !

Вам нужно точно определиться, при каком событии должен выполняться обработчик ( функция ) в вашем случае


if (jQuery(window).width() < 720) return;

if(jQuery('#event_tabs li.active a').data( "id" ) == "kino"){
    direct.detach(); 
    bottom.live();
}
else if ( jQuery('#event_tabs li.active a').data( "id" )=="others") {
   direct.live();
   bottom.detach();
}
}

Nikita21 28.07.2016 15:20

Цитата:

Сообщение от jorjsmile (Сообщение 423639)
Простите, слабо понимаю что значит

Javascript - событийно ориенитрованный ( по большей части ). если нет события - ничего не будет выполняться.
условие выполняется всегда, поскольку вы проверяется есть ли свойство click в объекте jQuery, а оно там есть !

Вам нужно точно определиться, при каком событии должен выполняться обработчик ( функция ) в вашем случае


if (jQuery(window).width() < 720) return;

if(jQuery('#event_tabs li.active a').data( "id" ) == "kino"){
    direct.detach(); 
    bottom.live();
}
else if ( jQuery('#event_tabs li.active a').data( "id" )=="others") {
   direct.live();
   bottom.detach();
}
}

Имеется ввиду, что если запускать скрипт только после нажатия, то он не срабатывает на первой странице-табе, где по дефолту стоит #event_tabs li.active a data-id="kino".

Еще один глупый вопрос:
if (jQuery(window).width() < 720) return; - выдает Illegal return statement. Могли бы вы подсказать куда его сунуть?


Часовой пояс GMT +3, время: 03:39.