Javascript.RU

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

Вытащить id от дива для использования в JS
Ребят , прошу помощи, так как Javascript вообще не понимаю.
Есть конопки (div c айдишниками) и связанные с ними разделы (тоже div с айдишниками) при нажатии на кнопку раздел становится видимым..
Как оптимизировать этот код, чтобы на каждую кнопку не писать hide, show , сейчас код выглядит так :
$(document).ready(function(){
	$("#button_server").click(function(){
	$("#global_menu_rootser").hide();
	$("#global_menu_users").hide();
	$("#global_menu_server").show();});
	
	$("#button_users").click(function(){
	$("#global_menu_rootser").hide();
	$("#global_menu_server").hide();
	$("#global_menu_users").show();});
	......
});
Ответить с цитированием
  #2 (permalink)  
Старый 12.02.2013, 21:43
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

$(document).ready(function(){
function toggle(a,b){
   if(b){$(a).show();return}
   $(a).hide();
}
$("#button_users,#button_users").click(function(){
   // Массив селекторов, следущее 0 или 1; 0 - cкрываем, 1 - открываем
   a='#global_menu_rootser,0,#global_menu_users,0,#global_menu_server,0,#global_menu_users,1'.split(',');
   for(var i=0; i<a.length; i+=2) {
	toggle(a[i],a[i+1])
   }

});

Последний раз редактировалось Deff, 13.02.2013 в 00:35.
Ответить с цитированием
  #3 (permalink)  
Старый 12.02.2013, 22:03
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Deff, хрень полная. Еще больше запутываешь человека.
xfavorit, приведите кусок своего html-кода с меню.
Все можно сделать гораздо проще используя более подходящие селекторы и атрибуты (возможно лучше вместо кнопок использовать ссылки с href, указывающем на нужный id блока?)
Ответить с цитированием
  #4 (permalink)  
Старый 12.02.2013, 22:07
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

function Toggle(a,b){
   if(b){$(a).show();return}
   $(a).hide();
}

Трэш. Во-первых все проще с тернартым оператором. Во вторых - откуда такое именование - с большой буквы? Это же не C# )))
И что за a, b ? Гениальные названия переменных )))
function toggle(el, show){
   $(el)[show ? 'show' : 'hide']();
}
Ответить с цитированием
  #5 (permalink)  
Старый 12.02.2013, 22:32
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

danik.js,
В компрессоре один фиг ужмёт до a,b
И не интересная задача
Ответить с цитированием
  #6 (permalink)  
Старый 12.02.2013, 22:43
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Ну давай тогда сразу писать примерно так:
(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cu(a){if(!cj[a])...
Ответить с цитированием
  #7 (permalink)  
Старый 12.02.2013, 22:47
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от danik.js
   $(el)[show ? 'show' : 'hide']();
Метода
if(b){$(a).show();return}

наработанная и подходит для много проверок

if(b){$(a).show();return}
if(b==0{$(a).toggle();return}
if(b==-1){$(a).hide();return}

Так что писал даже не задумываясь
Ответить с цитированием
  #8 (permalink)  
Старый 13.02.2013, 08:46
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

if(b){$(a).show();return} 
if(b==0{$(a).toggle();return}
if(b==-1){$(a).hide();return}

Тоже говнецом попахивает
3-е условие не выполнится никогда )
Для "много проверок" существует switch:

switch (b)
{
    case 1:
        $(a).show();
        break;
    case 0:
        $(a).toggle();
        break;
    case -1:
        $(a).hide();
        break;
}


Или даже:
$(a)[{1:'show', 0:'toggle', -1:'hide'}[b]]();
Ответить с цитированием
  #9 (permalink)  
Старый 13.02.2013, 09:12
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,215

Столько всего понаписали... А этого
Сообщение от danik.js
приведите кусок своего html-кода с меню
Так и не дождались от автора...
Ответить с цитированием
  #10 (permalink)  
Старый 13.02.2013, 11:18
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

danik.js,
Ти чо злыдень такой с утра ?
Просто пишите красивый код, ежели стоящий - будет взят за пример. Я не позиционирую себя как гуру скриптов, мне интересны сами задачи.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Фокус для дива GrizzlyBear Общие вопросы Javascript 35 18.06.2012 20:52
Пользовательский JS скрипт для Опера Space-06 Events/DOM/Window 1 29.02.2012 13:27
Кнопка ссылкой, для случаев если js отключен clear Events/DOM/Window 1 27.07.2011 09:08
"Классический" ООП в JavaScript Андрей Параничев Общие вопросы Javascript 67 25.03.2009 18:33