Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Вытащить id от дива для использования в JS (https://javascript.ru/forum/jquery/35501-vytashhit-id-ot-diva-dlya-ispolzovaniya-v-js.html)

xfavorit 12.02.2013 21:09

Вытащить 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();});
	......
});

Deff 12.02.2013 21:43

$(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])
   }

});

danik.js 12.02.2013 22:03

Deff, хрень полная. Еще больше запутываешь человека.
xfavorit, приведите кусок своего html-кода с меню.
Все можно сделать гораздо проще используя более подходящие селекторы и атрибуты (возможно лучше вместо кнопок использовать ссылки с href, указывающем на нужный id блока?)

danik.js 12.02.2013 22:07

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

Трэш. Во-первых все проще с тернартым оператором. Во вторых - откуда такое именование - с большой буквы? Это же не C# )))
И что за a, b ? Гениальные названия переменных )))
function toggle(el, show){
   $(el)[show ? 'show' : 'hide']();
}

Deff 12.02.2013 22:32

danik.js,
В компрессоре один фиг ужмёт до a,b
И не интересная задача

danik.js 12.02.2013 22:43

Ну давай тогда сразу писать примерно так:
(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])...

Deff 12.02.2013 22:47

Цитата:

Сообщение от 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}

Так что писал даже не задумываясь

danik.js 13.02.2013 08:46

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]]();

ksa 13.02.2013 09:12

Столько всего понаписали... А этого
Цитата:

Сообщение от danik.js
приведите кусок своего html-кода с меню

Так и не дождались от автора... :(

Deff 13.02.2013 11:18

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


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