Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 29.07.2016, 10:56
Новичок на форуме
Отправить личное сообщение для Nikita21 Посмотреть профиль Найти все сообщения от Nikita21
 
Регистрация: 28.07.2016
Сообщений: 9

Выполнение по клику и при загрузке
Всем привет. Помогите, пожалуйста, новичку.
Хочу сделать, чтобы два блока удалялись в зависимости от табов, при этом, что бы это происходило при экране >=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("#event_tabs li a").click) {
  jQuery("#event_tabs li a").click(function() {
if (jQuery(window).width() >= 720 && jQuery('#event_tabs li.active a').data( "id" ) == "kino"){
direct.detach(); 
bottom.live();
}
else if (jQuery(window).width() >= 720 && jQuery('#event_tabs li.active a').data( "id" )=="others") {
  direct.live();
bottom.detach();}
})}

else {
if (jQuery(window).width() >= 720 && jQuery('#event_tabs li.active a').data( "id" ) == "kino"){ 
  direct.detach(); 
  bottom.live();
}
else if (jQuery(window).width() >= 720 && jQuery('#event_tabs li.active a').data( "id" ) == "others") {
  direct.live();
  bottom.detach();}}
Ответить с цитированием
  #2 (permalink)  
Старый 29.07.2016, 12:56
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Nikita21,
Строки 6-12 вписать в отдельную функцию, к которой обращаться при загрузке и по клику (м.б. еще по ресайзу?)
Ответить с цитированием
  #3 (permalink)  
Старый 29.07.2016, 20:29
Новичок на форуме
Отправить личное сообщение для Nikita21 Посмотреть профиль Найти все сообщения от Nikita21
 
Регистрация: 28.07.2016
Сообщений: 9

Сообщение от Dilettante_Pro Посмотреть сообщение
Nikita21,
Строки 6-12 вписать в отдельную функцию, к которой обращаться при загрузке и по клику (м.б. еще по ресайзу?)
Вроде бы сделал так, но не работает
window.onload=function(){
var direct = jQuery('.direct_container_afisha')
var bottom = jQuery('#bottom_afisha')

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


Может я неарвильно определяю data-id?
Ответить с цитированием
  #4 (permalink)  
Старый 30.07.2016, 11:05
Аватар для dd_smol
Кандидат Javascript-наук
Отправить личное сообщение для dd_smol Посмотреть профиль Найти все сообщения от dd_smol
 
Регистрация: 08.03.2015
Сообщений: 131

Если честно не совсем понимаю чего вы пытаетесь сделать но ...
jQuery(function ( $ ) {
	var direct = $('.direct_container_afisha'),
		bottom = $('#bottom_afisha');
		
	$('#event_tabs a').on('click', function ( e ) {
		if ( window.innerWidth > 720 || !$( this.parentNode ).hasClass('active') ) {
			return false;
		}

		switch( $(this).data('id').toLowerCase() )  {
			case 'kino': 
				direct.detach();
				bottom.click();
				break;
			case 'clubs':
			case 'theater':
			case 'others':
				bottom.detach();
				direct.click();
				break;
			
		}

		return false;
	});
});
Ответить с цитированием
  #5 (permalink)  
Старый 02.08.2016, 11:10
Новичок на форуме
Отправить личное сообщение для Nikita21 Посмотреть профиль Найти все сообщения от Nikita21
 
Регистрация: 28.07.2016
Сообщений: 9

Сообщение от dd_smol Посмотреть сообщение
Если честно не совсем понимаю чего вы пытаетесь сделать но ...
Есть страница на которой есть 4 таба. Табы различаются только по data-id.

<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>


Нужно, чтобы на табе "kino", который изначально активный. Удалялся блок <div id="yandex_ad_afisha_123"></div>, а на других табах появлялся, и при этом удалялся другой блок <div id="bottom_afisha" class="clearfix"></div>. И все это работало только при экране >720.

Если делать вызов функции только по клику, то она не срабатывает изначально. Если делать без клика, то функция срабатывает единожды, при загрузке страницы.
Ответить с цитированием
  #6 (permalink)  
Старый 02.08.2016, 11:49
Новичок на форуме
Отправить личное сообщение для Nikita21 Посмотреть профиль Найти все сообщения от Nikita21
 
Регистрация: 28.07.2016
Сообщений: 9

Сообщение от dd_smol Посмотреть сообщение
Если честно не совсем понимаю чего вы пытаетесь сделать но ...
Спасибо за помощь. Сделал вот так. Может быть кому понадобится.
window.onload=function(){ 
  var direct = jQuery('.direct_container_afisha') 
  var bottom = jQuery('#bottom_afisha')  
  if (jQuery(window).width() >= 720){
  if (jQuery('#event_tabs .active a[data-id="kino"]').length > 0){direct.hide();  bottom.show();}
 
jQuery('#event_tabs li a[data-id="kino"]').click(function() { direct.hide();  bottom.show();}); 
jQuery('#event_tabs li a[data-id="clubs"]').click(function() {   direct.show(); bottom.hide();});
jQuery('#event_tabs li a[data-id="theater"]').click(function() {direct.show(); bottom.hide();}); 
jQuery('#event_tabs li a[data-id="others"]').click(function() { direct.show(); bottom.hide();} );
  }
}
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перестает работать галерея при загрузке через Ajax (Need help) Clodan jQuery 0 20.04.2015 20:18
Помогите сделать выполнение jquery при загрузке страницы acidjazzz jQuery 3 30.03.2015 14:27
При загрузке не работает, по F5 работает trillian Events/DOM/Window 1 05.12.2014 19:37
UI datepicker отображение произвольной даты при загрузке al456 jQuery 6 30.12.2013 03:37
Выезжающие\уезжающие div при загрузке страницы goodkot Элементы интерфейса 1 28.09.2012 08:58