2011-02-08 65 views
3

我有一个超长的jquery片段,我觉得可以用正确的逻辑进行简化。自从我终于开始工作以来,我很害怕接触它。如何简化if/else jquery片段

“else $ target = #none”实际上是“无显示”语句。我不确定如何以更好的方式表达这一点。

非常感谢! -zeem

PS。链接到医疗大麻网站,所以NSFW链接!

$(function() { 
    var $target = $('#CO1'); 
    if (mmjsRegion == 'CO') { 
     $target = $('#CO1'); 
    } else { 
     $target = $('#none'); 
    } 
    $target.imBannerRotater({ 
     return_type: 'json', 
     data_map: { 
      image_name: 'name', 
      url_name: 'url' 
     }, 
     image_url: 'http://www.kindreviews.com/wp-content/plugins/geoads/CO1.php', 
     base_path: 'http://www.kindreviews.com/wp-content/plugins/geoads/images/', 
    }); 
}); 

$(function() { 
    var $target = $('#CO2'); 
    if (mmjsRegion == 'CO') { 
     $target = $('#CO2'); 
    } else { 
     $target = $('#none'); 
    } 
    $target.imBannerRotater({ 
     return_type: 'json', 
     data_map: { 
      image_name: 'name', 
      url_name: 'url' 
     }, 
     image_url: 'http://www.kindreviews.com/wp-content/plugins/geoads/CO2.php', 
     base_path: 'http://www.kindreviews.com/wp-content/plugins/geoads/images/', 
    }); 
}); 
$(function() { 
    var $target = $('#CO3'); 
    if (mmjsRegion == 'CO') { 
     $target = $('#CO3'); 
    } else { 
     $target = $('#none'); 
    } 
    $target.imBannerRotater({ 
     return_type: 'json', 
     data_map: { 
      image_name: 'name', 
      url_name: 'url' 
     }, 
     image_url: 'http://www.kindreviews.com/wp-content/plugins/geoads/CO3.php', 
     base_path: 'http://www.kindreviews.com/wp-content/plugins/geoads/images/', 
    }); 
}); 
$(function() { 
    var $target = $('#CA1'); 
    if (mmjsRegion == 'CA') { 
     $target = $('#CA1'); 
    } else { 
     $target = $('#none'); 
    } 
    $target.imBannerRotater({ 
     return_type: 'json', 
     data_map: { 
      image_name: 'name', 
      url_name: 'url' 
     }, 
     image_url: 'http://www.kindreviews.com/wp-content/plugins/geoads/CA1.php', 
     base_path: 'http://www.kindreviews.com/wp-content/plugins/geoads/images/', 
    }); 
}); 
$(function() { 
    var $target = $('#CA2'); 
    if (mmjsRegion == 'CA') { 
     $target = $('#CA2'); 
    } else { 
     $target = $('#none'); 
    } 
    $target.imBannerRotater({ 
     return_type: 'json', 
     data_map: { 
      image_name: 'name', 
      url_name: 'url' 
     }, 
     image_url: 'http://www.kindreviews.com/wp-content/plugins/geoads/CA2.php', 
     base_path: 'http://www.kindreviews.com/wp-content/plugins/geoads/images/', 
    }); 
}); 
$(function() { 
    var $target = $('#CA3'); 
    if (mmjsRegion == 'CA') { 
     $target = $('#CA3'); 
    } else { 
     $target = $('#none'); 
    } 
    $target.imBannerRotater({ 
     return_type: 'json', 
     data_map: { 
      image_name: 'name', 
      url_name: 'url' 
     }, 
     image_url: 'http://www.kindreviews.com/wp-content/plugins/geoads/CA3.php', 
     base_path: 'http://www.kindreviews.com/wp-content/plugins/geoads/images/', 
    }); 
}); 

回答

2

这应做到:

var r = mmjsRegion, 
    s = r == 'CO' ? '#CO1, #CO2, #CO3' : r == 'CA' ? '#CA1, #CA2, #CA3' : ''; 

$(s).each(function() { 
    $(this).imBannerRotater({ 
     return_type: 'json', 
     data_map: { 
      image_name: 'name', 
      url_name: 'url' 
     }, 
     image_url: 'http://www.kindreviews.com/wp-content/plugins/geoads/' + this.id + '.php', 
     base_path: 'http://www.kindreviews.com/wp-content/plugins/geoads/images/', 
    }); 
}); 
2
$(["CO;CO1", "CO;CO2", "CO;CO3", "CA;CA1", "CA;CA2", "CA;CA3"]).each(function() { 

     var data = this.split(";"); 
     var id = data[1]; 
     var region = data[0]; 

     var $target = $("#" + id); 
     if (mmjsRegion == region){ 
     $target = $("#" + id); 
     } 
     else{ 
      $target = $('#none'); 
     } 

     $target.imBannerRotater({ 
     return_type: 'json', 
     data_map: { 
      image_name: 'name', 
      url_name: 'url' 
     }, 
     image_url: 'http://www.kindreviews.com/wp-content/plugins/geoads/' + id + '.php', 
     base_path: 'http://www.kindreviews.com/wp-content/plugins/geoads/images/', 
     }); 

}); 

我没有看到这样做的原因..

var $target = $('#CO1'); 
     if (mmjsRegion == 'CO'){ 
     $target = $('#CO1'); 
     } 
     else{ 
      $target = $('#none'); 
     } 
+0

你,我做到了,因为我无法弄清楚是怎么回事,以写else不要运行功能。 感谢您的回复!可悲的是,当我将它输入到网站时,它不起作用。 – zeemy23 2011-02-08 00:46:40

2

权,我认为可以归结为:

(function($) { 
    $.each(['CO1', 'CO2', 'CO3', 'CA1', 'CA2', 'CA3'], function(index, id) { 
     $('#' + (mmjsRegion == id.replace(/\d+$/,'') ? id : 'none')).imBannerRotater({ 
      return_type: 'json', 
      data_map: { 
       image_name: 'name', 
       url_name: 'url' 
      }, 
      image_url: 'http://www.kindreviews.com/wp-content/plugins/geoads/' + id + '.php', 
      base_path: 'http://www.kindreviews.com/wp-content/plugins/geoads/images/', 
     }); 
    }); 
})(jQuery); 

由于mmjsRegion过程中不会改变代码,它可以降低更多,但我不知道imBannerRotate()插件应该是调用编辑$('#none')三次,看起来像一个黑客。如果不需要$('#none')那么就可以:

(function($) { 
    $.each(['1', '2', '3'], function(index, id) { 
     $('#' + mmjsRegion + id).imBannerRotater({ 
      return_type: 'json', 
      data_map: { 
       image_name: 'name', 
       url_name: 'url' 
      }, 
      image_url: 'http://www.kindreviews.com/wp-content/plugins/geoads/' + mmjsRegion + id + '.php', 
      base_path: 'http://www.kindreviews.com/wp-content/plugins/geoads/images/', 
     }); 
    }); 
})(jQuery); 
+0

是啊!为什么我也没有看到这个 – Luke 2011-02-08 00:47:36

+0

可悲的是这段代码没有工作。感谢您的输入! – zeemy23 2011-02-08 00:53:33

+0

@ zeemy23:没有工作怎么样? – Orbling 2011-02-08 01:01:12

2
$(function(){ 

    var targets = ['CO', 'CA']; 
    var iterations = 3; 

    $.each(targets, function(index, value){ 

     for(var i=1; i<=iterations; i++) 
     { 
      var targetId = '#' + value + i.toString(); 
      $target = $(targetId); 

      if (mmjsRegion == value) { 
       $target = $(targetId); 
      } else { 
       $target = $('#none'); 
      } 

      $target.imBannerRotater({ 
       return_type: 'json', 
       data_map: { 
        image_name: 'name', 
        url_name: 'url' 
       }, 
       image_url: 'http://www.kindreviews.com/wp-content/plugins/geoads/' + value + i.toString() + '.php', 
       base_path: 'http://www.kindreviews.com/wp-content/plugins/geoads/images/' 
      }); 

     } 
    }); 
});