Javascript.RU

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

Оптимизация скрипта
Добрый день всем. С JS особо не дружу, по этому возникла просьба к специалистам. Значит суть вопроса таква, на страницу подгружается 2 блока, в левой части название областей, при нажатии на область в правом всплывает список городов в этой области, я вывел на страницу всю информацию и скрыл ее а на Jquery написал следующее
$(document).ready(function() {
$(".cities_group").hide();
$("#reg1").show();

$("#2").click(function () {$(".cities_group").hide();$("#reg2").show();});
$("#1").click(function () {$(".cities_group").hide();$("#reg1").show();});
$("#3").click(function () {$(".cities_group").hide();$("#reg3").show();});
$("#4").click(function () {$(".cities_group").hide();$("#reg4").show();});
$("#5").click(function () {$(".cities_group").hide();$("#reg5").show();});
$("#6").click(function () {$(".cities_group").hide();$("#reg6").show();});
$("#7").click(function () {$(".cities_group").hide();$("#reg7").show();});
$("#8").click(function () {$(".cities_group").hide();$("#reg8").show();});
$("#9").click(function () {$(".cities_group").hide();$("#reg9").show();});
$("#10").click(function () {$(".cities_group").hide();$("#reg10").show();});
$("#11").click(function () {$(".cities_group").hide();$("#reg11").show();});
$("#12").click(function () {$(".cities_group").hide();$("#reg12").show();});
$("#13").click(function () {$(".cities_group").hide();$("#reg13").show();});
$("#14").click(function () {$(".cities_group").hide();$("#reg14").show();});
$("#15").click(function () {$(".cities_group").hide();$("#reg15").show();});
$("#16").click(function () {$(".cities_group").hide();$("#reg16").show();});
$("#17").click(function () {$(".cities_group").hide();$("#reg17").show();});
$("#18").click(function () {$(".cities_group").hide();$("#reg18").show();});
$("#19").click(function () {$(".cities_group").hide();$("#reg19").show();});
$("#20").click(function () {$(".cities_group").hide();$("#reg20").show();});
$("#21").click(function () {$(".cities_group").hide();$("#reg21").show();});
$("#22").click(function () {$(".cities_group").hide();$("#reg22").show();});
$("#23").click(function () {$(".cities_group").hide();$("#reg23").show();});
$("#24").click(function () {$(".cities_group").hide();$("#reg24").show();});
$("#25").click(function () {$(".cities_group").hide();$("#reg25").show();});

});

Но мне кажется что этот код можно как-то упростить, помогите пожалуйста кому не сложно и еще вопрос, подобный код как-то негативно может влиять на сайт, ну тоесть глюки или тормоза? Заранее спасибо!
Ответить с цитированием
  #2 (permalink)  
Старый 06.06.2013, 17:41
Аватар для animhotep
Профессор
Отправить личное сообщение для animhotep Посмотреть профиль Найти все сообщения от animhotep
 
Регистрация: 17.01.2013
Сообщений: 887

упростить можно до нескольких строк
нужен хтмл чтоб сказать как
Ответить с цитированием
  #3 (permalink)  
Старый 06.06.2013, 17:56
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

$(document).ready(function() {
$(".cities_group").hide();
$("#reg1").show();
for(var i=1;i<26; i++){
$("#"+i).click(function () {$(".cities_group").hide();$("#reg"+i).show();});
}
});

Последний раз редактировалось Deff, 07.06.2013 в 12:36.
Ответить с цитированием
  #4 (permalink)  
Старый 07.06.2013, 12:10
Интересующийся
Отправить личное сообщение для Veritaspl Посмотреть профиль Найти все сообщения от Veritaspl
 
Регистрация: 11.03.2013
Сообщений: 16

Огромное спасибо за отклик на мое просьбу, я как то и хотел применить цикл, ноя не совсем понимаю как он работает в JS. Но всеравно Ваш код как-то не так работает, хотя я понимаю что должно все работать... При клике исчезают все блоке с .cities_group ну а нужный блок с id reg+i не появляется... Не пойму почему так.
Ответить с цитированием
  #5 (permalink)  
Старый 07.06.2013, 12:16
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

Сообщение от Veritaspl
а нужный блок с id reg+i не появляется... Не пойму почему так.
И не должен .
Чему равно i на момент полной отработки цикла и вызова функции обработчика $("#reg"+i), учитывая что i глобальная?
а эта тема есть в http://learn.javascript.ru/

Последний раз редактировалось dmitriymar, 07.06.2013 в 12:19.
Ответить с цитированием
  #6 (permalink)  
Старый 07.06.2013, 12:34
Аватар для Hekumok
Отправить личное сообщение для Hekumok Посмотреть профиль Найти все сообщения от Hekumok
 
Регистрация: 04.06.2012
Сообщений: 513

так
$(document).ready(function() {
  var group = $(".cities_group") ;
  group.hide() ;
  $("#reg1").show() ;
  for(var i = 1; i < 26; i++) {
    $("#"+i).click(function () {
      group.hide() ;
      $("#reg"+this.id).show() ;
    }) ;
  } ;
}) ;

Или так
$(document).ready(function() {
  var group = $(".cities_group") ;
  group.hide() ;
  $("#reg1").show() ;
  for(var i = 1; i < 26; i++) (function(i) {
    $("#"+i).click(function () {
      group.hide() ;
      $("#reg"+i).show() ;
    }) ;
  })(i) ;
}) ;
__________________
★ ²º¹³ ☆
Ответить с цитированием
  #7 (permalink)  
Старый 07.06.2013, 12:40
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

Зачем программно генерить обработчики событий , если можно обойтись делегированием и одной цепочкой?
Ответить с цитированием
  #8 (permalink)  
Старый 07.06.2013, 13:56
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от dmitriymar
Зачем программно генерить обработчики событий , если можно обойтись делегированием и одной цепочкой?
Можно дать имя обработчику и навешивать его одного на все элементы, а не дублировать. Вместо череды id'шников лучше проставить класс - так будет удобнее и легче добавлять элементы.
Ответить с цитированием
  #9 (permalink)  
Старый 07.06.2013, 14:07
Интересующийся
Отправить личное сообщение для Veritaspl Посмотреть профиль Найти все сообщения от Veritaspl
 
Регистрация: 11.03.2013
Сообщений: 16

Спасибо большое всем за советы!!! Сейчас буду разбираться по ним!
Ответить с цитированием
  #10 (permalink)  
Старый 07.06.2013, 14:09
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,124

Сообщение от Veritaspl
я как то и хотел применить цикл, ноя не совсем понимаю как он работает в JS
Цикл он и в Африке цикл!
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получить результат выполнения скрипта на сервере в переменную ява gyper AJAX и COMET 5 19.11.2012 11:36
не работают два jquery скрипта вместе SunYang Общие вопросы Javascript 1 03.09.2011 21:13
Оптимизация скрипта Беляш jQuery 3 11.07.2010 14:45
Круговорт скрипта.... Karl Общие вопросы Javascript 1 17.10.2009 15:37
Блок переключения меню на JS, два скрипта в одном файле Dizeloid Элементы интерфейса 0 30.07.2009 12:03