Упростить повторяющиеся значения тегов jQuery / Javascript - PullRequest
2 голосов
/ 05 октября 2019

У меня есть следующий фрагмент кода, и мне интересно, есть ли способ сделать его более простым.

Мой код:

     var arr = $(".countrycode").toArray();
     for ( var i = 0, l = arr.length; i < l; i++ ) {
        var tagValue = $("#"+arr[i].id).attr("data-continent");
        if(tagValue=="na"||tagValue=="sa"){
            $(".select-us").attr("disabled",false);
        }
         if(tagValue=="oc"){
            $(".select-oc").attr("disabled",false);
        }
         if(tagValue=="eu"){
            $(".select-eu").attr("disabled",false);
        }
         if(tagValue=="as"){
            $(".select-as").attr("disabled",false);
        }
    }

Спасибо за внимание.

Ответы [ 3 ]

3 голосов
/ 05 октября 2019

Также третий способ комбинирует $.fn.each и if statement следующим образом:

$('.countrycode').each(function(){
    var tagValue = $(this).attr("data-continent");
    var lttrs = tagValue == "na" || tagValue == "sa" ? "us" : tagValue;
   $(`.select-${lttrs}`).attr("disabled",false);
});
3 голосов
/ 05 октября 2019

Нет необходимости преобразовывать коллекцию jQuery в массив, если вы можете использовать встроенный $.fn.each итератор

$(".countrycode").each(function(){
   // `this` is current element instance
   var tagValue = $(this).attr("data-continent"); 
   if(tagValue ....  )
   ....

})
2 голосов
/ 05 октября 2019

Вы можете попробовать это.

var arr = $(".countrycode").toArray();
for ( var i = 0, l = arr.length; i < l; i++ ) {
   var tagValue = $("#"+arr[i].id).attr("data-continent");
   var element = tagValue == "na" || tagValue == "sa" ? "us" : tagValue;
   $(`.select-${element}`).attr("disabled",false);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...