12.02.2013, 21:09
|
Новичок на форуме
|
|
Регистрация: 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();});
......
});
|
|
12.02.2013, 21:43
|
без статуса
|
|
Регистрация: 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.
|
|
12.02.2013, 22:03
|
|
Профессор
|
|
Регистрация: 11.09.2010
Сообщений: 8,804
|
|
Deff, хрень полная. Еще больше запутываешь человека.
xfavorit, приведите кусок своего html-кода с меню.
Все можно сделать гораздо проще используя более подходящие селекторы и атрибуты (возможно лучше вместо кнопок использовать ссылки с href, указывающем на нужный id блока?)
|
|
12.02.2013, 22:07
|
|
Профессор
|
|
Регистрация: 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']();
}
|
|
12.02.2013, 22:32
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
danik.js,
В компрессоре один фиг ужмёт до a,b
И не интересная задача
|
|
12.02.2013, 22:43
|
|
Профессор
|
|
Регистрация: 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])...
|
|
12.02.2013, 22:47
|
без статуса
|
|
Регистрация: 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}
Так что писал даже не задумываясь
|
|
13.02.2013, 08:46
|
|
Профессор
|
|
Регистрация: 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]]();
|
|
13.02.2013, 09:12
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,225
|
|
Столько всего понаписали... А этого
Сообщение от danik.js
|
приведите кусок своего html-кода с меню
|
Так и не дождались от автора...
|
|
13.02.2013, 11:18
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
danik.js,
Ти чо злыдень такой с утра ?
Просто пишите красивый код, ежели стоящий - будет взят за пример. Я не позиционирую себя как гуру скриптов, мне интересны сами задачи.
|
|
|
|