Jump to content
  • 0

Упростить код


byxah
 Share

Question

Приветствую.

10 минут смотрю на кусок кода и понимаю что его можно сократить намного, но пока не могу понять как. Подскажите как тут можно оптимизовать:


$('#sizes legend').each(function() {

if( /(16116)/.test(fid) && /(52|53|54|55|56|57|58|59|60)/.test($(this).html()) ) {
$(this).parent().show();
}
else if( /(16258|16259)/.test(fid) && /(42|44|46|48|50|52|54|56|58|60|62|64|66|68|70|72)/.test($(this).html()) ) {
$(this).parent().show();
}
else if( /(16260)/.test(fid) && /(52|53|54|55|56|57|58|59|60)/.test($(this).html()) ) {
$(this).parent().show();
}
else if( /(16219|16261)/.test(fid) && /(18|20|22|24|26)/.test($(this).html()) ) {
$(this).parent().show();
}

});

Link to comment
Share on other sites

10 answers to this question

Recommended Posts

  • 0

Что это?

кусок кода на jquery

цикл с перебором элементов и набор условий.

сейчас получается что действие после каждого условия одно и тоже, т.е. одна строчка пишется 4 раза, вот и думаю как сократить

Link to comment
Share on other sites

  • 0

Как минимум

$('#sizes legend').each(function() {  
var h=$(this).html();
if(
(/(16116)/.test(fid) && /(52|53|54|55|56|57|58|59|60)/.test(h)) ||
(/(16258|16259)/.test(fid) && /(42|44|46|48|50|52|54|56|58|60|62|64|66|68|70|72)/.test(h)) ||
(/(16260)/.test(fid) && /(52|53|54|55|56|57|58|59|60)/.test(h)) ||
(/(16219|16261)/.test(fid) && /(18|20|22|24|26)/.test(h))
)
$(this).parent().show();
});

но что-то мне подсказывает что исходную задачу надо решать иначе.

Link to comment
Share on other sites

  • 0

если иначе то как?

Для этого нужно знать условие задачи, как минимум :)

задача следующая, есть каталог товаров одежды:

Шапки

-Мужские

-Женские

-Подростковые

Одежда

-Мужская

-Женская

-Подростковая

Каждый из разделов имеет свой (fid), а также свой набор размеров для товаров. Т.е. у шапок размеры идут 52-60, для одежды 42-72 через 2 размера, для подростковой одежды размеры опять же другие.

данный кусок кода по fid отображает для каждого из разделов размеры которые определены только для него. надеюсь понятно объяснил смысл.

Link to comment
Share on other sites

  • 0

Вобщем вышло что то в этом роде:


var showsize=[];
var allsize = {
caps : [53,54,55,56,57,58,59,60],
clothes : [42,44,46,48,50,52,54,56,58,60,62,64,66,68,70,72],
young: [28,30,32,34,36,38,40,42,44,46],
small: [18,20,22,24,26]
}

if( /(16116)/.test(fid) ) {showsize=allsize.caps}
else if ( /(16258|16259)/.test(fid) ) {showsize=allsize.clothes }
else if ( /(16260)/.test(fid) ) {showsize=allsize.young}
else if ( /(16261)/.test(fid) ) {showsize=allsize.small}

$.each(showsize, function(i, val) {
$('#sizes legend[chk="'+val+'"]').parent().show();
});

условие выбирает подмассив, который и передается для обработки.

Кстати ради общего развития:

какое условие быстрее выполняется работает?

if (a==1 || a==2 || a==3) или if(/(1|2|3)/.test(a))

Edited by byxah
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
Answer this question...

×   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