Вытащить 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();}); ...... }); |
$(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, хрень полная. Еще больше запутываешь человека.
xfavorit, приведите кусок своего html-кода с меню. Все можно сделать гораздо проще используя более подходящие селекторы и атрибуты (возможно лучше вместо кнопок использовать ссылки с href, указывающем на нужный id блока?) |
function Toggle(a,b){ if(b){$(a).show();return} $(a).hide(); } Трэш. Во-первых все проще с тернартым оператором. Во вторых - откуда такое именование - с большой буквы? Это же не C# ))) И что за a, b ? Гениальные названия переменных ))) function toggle(el, show){ $(el)[show ? 'show' : 'hide'](); } |
danik.js,
В компрессоре один фиг ужмёт до a,b И не интересная задача |
Ну давай тогда сразу писать примерно так:
(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])... |
Цитата:
if(b){$(a).show();return} наработанная и подходит для много проверок if(b){$(a).show();return} if(b==0{$(a).toggle();return} if(b==-1){$(a).hide();return} Так что писал даже не задумываясь |
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]](); |
Столько всего понаписали... А этого
Цитата:
|
danik.js,
:) Ти чо злыдень такой с утра ? Просто пишите красивый код, ежели стоящий - будет взят за пример. Я не позиционирую себя как гуру скриптов, мне интересны сами задачи. |
Часовой пояс GMT +3, время: 15:34. |