Jump to content

Сжать JS


GeSTaM
 Share

Recommended Posts

В общем суть такая: JS пока знаю не очень хорошо так как мало чего приходилось на нем делать.

И вот написал я код, он работает, но уж очень меня смущает что много чего дублируется, можете пожалуйста если возможно сделать код менее длинным, что бы на вашем примере я начал улучшать свою логику в JS =)



/* Фильтр по типу*/
function showAllSearch(){
$('.search-bar li').removeClass('active');
$('.search-all').addClass('active');
$('.right-search-filter').removeClass().addClass('right-search-filter');
}
function showPeopleSearch(){
$('.search-bar li').removeClass('active');
$('.search-people').addClass('active');
$('.right-search-filter').removeClass().addClass('right-search-filter showPeople');
}
function showGroupSearch(){
$('.search-bar li').removeClass('active');
$('.search-groups').addClass('active');
$('.right-search-filter').removeClass().addClass('right-search-filter showGroup');
}
function showBlogsSearch(){
$('.search-bar li').removeClass('active');
$('.search-blogs').addClass('active');
$('.right-search-filter').removeClass().addClass('right-search-filter showBlogs');
}
function showAudioSearch(){
$('.search-bar li').removeClass('active');
$('.search-audio').addClass('active');
$('.right-search-filter').removeClass().addClass('right-search-filter showAudio');
}
function showVideoSearch(){
$('.search-bar li').removeClass('active');
$('.search-video').addClass('active');
$('.right-search-filter').removeClass().addClass('right-search-filter showVideo');
}
function showNewsSearch(){
$('.search-bar li').removeClass('active');
$('.search-news').addClass('active');
$('.right-search-filter').removeClass().addClass('right-search-filter showNews');
}
function showEventSearch(){
$('.search-bar li').removeClass('active');
$('.search-event').addClass('active');
$('.right-search-filter').removeClass().addClass('right-search-filter showEvent');
}
function showPageSearch(){
$('.search-bar li').removeClass('active');
$('.search-page').addClass('active');
$('.right-search-filter').removeClass().addClass('right-search-filter showPage');
}
function showAppsSearch(){
$('.search-bar li').removeClass('active');
$('.search-apps').addClass('active');
$('.right-search-filter').removeClass().addClass('right-search-filter showApps');
}
function showThemeSearch(){
$('.search-bar li').removeClass('active');
$('.search-theme').addClass('active');
$('.right-search-filter').removeClass().addClass('right-search-filter showTheme');
}
/* /Фильтр по типу */

Это та часть которой я не доволен. В принципе это примерно такой же поиск как в контакте.

При нажатие на 1 из пунктов вызывается функция (например: <li class="search-people"><a href="#/search/users" onclick="showPeopleSearch();">Люди</a></li> ), в которой из всех <li> убирается класс active и добавляется в <li> на которую мы кликнули, а также меняется класс у соседнего дива что бы отобразить в нем нужную форму.

Link to comment
Share on other sites

Достаточно посмотреть на код каждой функции и найти различия. Различия всего в двух значениях ".search-apps" и "right-search-filter showPeople" все остальные операции одинаковые, значит можно написать одну функцию, а в параметрах при вызове передавать нужные значения. Как-то так:

function showAllSearch(arg1, arg2){
$('.search-bar li').removeClass('active');
$(arg1).addClass('active');
$('.right-search-filter').removeClass().addClass(arg2);
}

Это касательно только логики языка...

Link to comment
Share on other sites

Достаточно посмотреть на код каждой функции и найти различия. Различия всего в двух значениях ".search-apps" и "right-search-filter showPeople" все остальные операции одинаковые, значит можно написать одну функцию, а в параметрах при вызове передавать нужные значения. Как-то так:

function showAllSearch(arg1, arg2){
$('.search-bar li').removeClass('active');
$(arg1).addClass('active');
$('.right-search-filter').removeClass().addClass(arg2);
}

Это касательно только логики языка...

Спасибо, все заработало =)

Просто не разу еще не передавал параметры, все как то только .show да .hide =)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy