2011-09-01 39 views
1

我想使用jQuery做一個谷歌瀏覽器擴展。現在,這是工作,但它太長了(這不是「少寫多做」)。所以我在尋找一些速記。這是一個沒有太長和重複的代碼,ISO shorthands

// max-width function from http://www.labs.skengdon.com/maxSize 
;(function($){$.fn.maxSize=function(options){if(typeof options!=='object'){var options={width:options,height:options}};return this.each(function(){$img=$(this);var F;var FW=0;var FH=0;if(options.width){FW=$img.width()/options.width;F=1;};if(options.height){FH=$img.height()/options.height;F=0;};if(FW&&FH){F=FW/FH;};if((F>=1)&&(FW>=1)){$(this).width(options.width);};if((F<=1)&&(FH>=1)){$(this).height(options.height);};});};})(jQuery); 

// this insert divs 
$('ol.floatcontainer').filter(':contains(Images)').after('<div id="wrapper" class="wrapper" name="wrapper"><div id="scroll" class="scroll" ></div><div id="big" class="big" name="big"><div id="loader" class="loading"></div></div><div id="footer" class="footer" name="footer"><p class="url"></p></div></div>'); 
$('#wrapper').css({"background-color":"#FFFFFF","margin":"0"}); 
$('.scroll').css({"background-color":"#ccc","padding":"0px"}); 
$('#big').css({"background-color":"#ddd","clear":"left"});//,"padding":"20px" 
$('#footer').css({"background-color":"#eee","height":"1%"}); 

現在我重複16次過長...和可怕的代碼

if ($('.forumrow table').find('img:eq(0)').filter('img[src*="thumbs"]').length > 0) 
{ 
$('.forumrow table').find('img:eq(0)').live("click",function(event) { 
event.preventDefault(); 
$('div.sc_menu').show(); 
$('#wrapper').css({"background-color":"#FFFFFF","margin":"0"}); 
$('#scroll').css({"background-color":"#ccc"});//,"padding":"20px" 
$('#big').css({"background-color":"#ddd","clear":"left","padding":"0px"});//"width":"500px","height":"375px" 
$('#footer').css({"background-color":"#eee","height":"1%"}); 
$('div#loader').css({"width":"500px","height":"375px","overflow":"hidden"}); 
$('div#loader.loading').css({"background":"url(http://i.imgur.com/pOA7f.gif) no-repeat center center"}); 
var linkim1 = $(".forumrow table a:has(img):eq(0)").attr('href'); 
var imsrc1 = $('.forumrow table').find('img:eq(0)').attr('src'); 
var imsrc1sp = imsrc1.split(/thumbs/); 
var imsrc1spdes = imsrc1sp[1]; 
var imsrc1spsin = imsrc1sp[0]; 
$(function() { 
      $('#loader').empty(); $('#loader').addClass('loading'); 
     var img = new Image();//var img = new Image(500,375); 
     $(img).load(function() { 
      $(this).css('display', 'none'); 
      $('#loader').removeClass('loading').append(this); 
      $(this).fadeIn(); 
      $(this).maxSize({ 
      width: 500, 
      height: 375 
      }); 

     }).error(function() { 

    var imsrc1nntr = imsrc1spdes.split(/\//)[1]; 
    var big1nntr = imsrc1spsin + imsrc1nntr; 
    $('#loader').empty(); $('#loader').addClass('loading'); 
     var img = new Image(); 
     $(img).load(function() { 
      $(this).css('display', 'none'); 
      $('#loader').removeClass('loading').append(this); 
      $(this).fadeIn(); 
      $(this).maxSize({ 
      width: 500, 
      height: 375 
      }); 
     }).attr('src', big1nntr); 
     $('.url').replaceWith('<p class="url"><br />Image<br /><input class="primary textbox" type="text" name="bbcode" value="[img]'+imsrc1spsin+''+imsrc1nntr+'[/img]" size="70" onclick="this.focus();this.select()"><br />Linked Image<br /><input class="primary textbox" type="text" name="bbcode" value="[url=' +linkim1+ '][img]'+imsrc1spsin+''+imsrc1nntr+'[/img][/url]" size="70" onclick="this.focus();this.select()"></p>'); 
     }).attr('src', imsrc1spsin+'medium'+imsrc1spdes); 
     $('#loader').wrap('<a href="' +linkimm1+ '"></a>'); 
     $('.url').replaceWith('<p class="url"><br />Image<br /><input class="primary textbox" type="text" name="bbcode" value="[img]'+imsrc1spsin+'medium'+imsrc1spdes+'[/img]" size="70" onclick="this.focus();this.select()"><br />Linked Image<br /><input class="primary textbox" type="text" name="bbcode" value="[url=' +linkim1+ '][img]'+imsrc1spsin+'medium'+imsrc1spdes+'[/img][/url]" size="70" onclick="this.focus();this.select()"></p>'); 
    }); 

$('img[src*="thumbs"]').css("-webkit-box-shadow","0px 0px 0px black, 0px 0px 0px black"); 
$(this).css("-webkit-box-shadow","2px 2px 2px black, 2px 1px 10px black"); 
}); 
//end first if 
} 

,現在這是我重複一遍即

if ($('.forumrow table').find('img:eq(1)').filter('img[src*="thumbs"]').length > 0) 
{ 
$('.forumrow table').find('img:eq(1)').live("click",function(event) { 
event.preventDefault(); 
$('div.sc_menu').show(); 
$('#wrapper').css({"background-color":"#FFFFFF","margin":"0"}); 
$('#scroll').css({"background-color":"#ccc"});//,"padding":"20px" 
$('#big').css({"background-color":"#ddd","clear":"left","padding":"0px"});//"width":"500px","height":"375px" 
$('#footer').css({"background-color":"#eee","height":"1%"}); 
$('div#loader').css({"width":"500px","height":"375px","overflow":"hidden"}); 
$('div#loader.loading').css({"background":"url(http://i.imgur.com/pOA7f.gif) no-repeat center center"}); 
var linkim2 = $(".forumrow table a:has(img):eq(1)").attr('href'); 
var imsrc2 = $('.forumrow table').find('img:eq(1)').attr('src'); 
var imsrc2sp = imsrc2.split(/thumbs/); 
var imsrc2spdes = imsrc2sp[1]; 
var imsrc2spsin = imsrc2sp[0]; 
$(function() { 
      $('#loader').empty(); $('#loader').addClass('loading'); 
     var img = new Image();//var img = new Image(500,375); 
     $(img).load(function() { 
      $(this).css('display', 'none'); 
      $('#loader').removeClass('loading').append(this); 
      $(this).fadeIn(); 
      $(this).maxSize({ 
      width: 500, 
      height: 375 
      }); 

     }).error(function() { 

    var imsrc2nntr = imsrc2spdes.split(/\//)[1]; 
    var big2nntr = imsrc2spsin + imsrc2nntr; 
    $('#loader').empty(); $('#loader').addClass('loading'); 
     var img = new Image(); 
     $(img).load(function() { 
      $(this).css('display', 'none'); 
      $('#loader').removeClass('loading').append(this); 
      $(this).fadeIn(); 
      $(this).maxSize({ 
      width: 500, 
      height: 375 
      }); 
     }).attr('src', big2nntr); 
     $('.url').replaceWith('<p class="url"><br />Image<br /><input class="primary textbox" type="text" name="bbcode" value="[img]'+imsrc2spsin+''+imsrc2nntr+'[/img]" size="70" onclick="this.focus();this.select()"><br />Linked Image<br /><input class="primary textbox" type="text" name="bbcode" value="[url=' +linkim2+ '][img]'+imsrc2spsin+''+imsrc2nntr+'[/img][/url]" size="70" onclick="this.focus();this.select()"></p>'); 
     }).attr('src', imsrc2spsin+'medium'+imsrc2spdes); 
     $('#loader').wrap('<a href="' +linkimm2+ '"></a>'); 
     $('.url').replaceWith('<p class="url"><br />Image<br /><input class="primary textbox" type="text" name="bbcode" value="[img]'+imsrc2spsin+'medium'+imsrc2spdes+'[/img]" size="70" onclick="this.focus();this.select()"><br />Linked Image<br /><input class="primary textbox" type="text" name="bbcode" value="[url=' +linkim2+ '][img]'+imsrc2spsin+'medium'+imsrc1spdes+'[/img][/url]" size="70" onclick="this.focus();this.select()"></p>'); 
    }); 

$('img[src*="thumbs"]').css("-webkit-box-shadow","0px 0px 0px black, 0px 0px 0px black"); 
$(this).css("-webkit-box-shadow","2px 2px 2px black, 2px 1px 10px black"); 
}); 
//end second if 
} 

是否有唐辦法第16次重複嗎?也許是短褲或功能?

+1

讓我們保持評論的建設性,我們? –

回答

0

如何使用數組,函數和for循環?不會提高可讀性,但可以減少複印麪食。 :D

imgsrc = new Array(); 
.... 
function magic (index) { 
    if ($('.forumrow table').find('img:eq(' + index + ')').filter('img[src*="thumbs"]').length > 0) 
      { 
      $('.forumrow table').find('img:eq($index)').live("click",function(event) { 
       event.preventDefault(); 
       $('div.sc_menu').show(); 
       $('#wrapper').css({"background-color":"#FFFFFF","margin":"0"}); 
       $('#scroll').css({"background-color":"#ccc"});//,"padding":"20px" 
       $('#big').css({"background-color":"#ddd","clear":"left","padding":"0px"});//"width":"500px","height":"375px" 
       $('#footer').css({"background-color":"#eee","height":"1%"}); 
       $('div#loader').css({"width":"500px","height":"375px","overflow":"hidden"}); 
       $('div#loader.loading').css({"background":"url(http://i.imgur.com/pOA7f.gif) no-repeat center center"}); 
       var linkim[$index] = $(".forumrow table a:has(img):eq(" + index + ")").attr('href'); 
       var imsrc[$index] = $('.forumrow table').find('img:eq(' + index + ' . ')').attr('src'); 
        var imsrcsp[index] = imsrc[index].split(/thumbs/); 
        var imsrcspdes[index] = imsrcsp[index][1]; 
        var imsrcspsin[index] = imsrc2sp[index][0]; 
        $(function() { 
         $('#loader').empty(); $('#loader').addClass('loading'); 
         var img = new Image();//var img = new Image(500,375); 
         $(img).load(function() { 
          $(this).css('display', 'none'); 
          $('#loader').removeClass('loading').append(this); 
          $(this).fadeIn(); 
          $(this).maxSize({ 
width: 500, 
height: 375 
}); 
          } 
          }).error(function() { 

           var imsrc2nntr = imsrc2spdes.split(/\//)[1]; 
           var big2nntr = imsrc2spsin + imsrc2nntr; 
           $('#loader').empty(); $('#loader').addClass('loading'); 
           var img = new Image(); 
           $(img).load(function() { 
            $(this).css('display', 'none'); 
            $('#loader').removeClass('loading').append(this); 
            $(this).fadeIn(); 
            $(this).maxSize({ 
width: 500, 
height: 375 
}); 
            }).attr('src', big2nntr); 
           $('.url').replaceWith('<p class="url"><br />Image<br /><input class="primary textbox" type="text" name="bbcode" value="[img]'+imsrc2spsin+''+imsrc2nntr+'[/img]" size="70" onclick="this.focus();this.select()"><br />Linked Image<br /><input class="primary textbox" type="text" name="bbcode" value="[url=' +linkim2+ '][img]'+imsrc2spsin+''+imsrc2nntr+'[/img][/url]" size="70" onclick="this.focus();this.select()"></p>'); 
           }).attr('src', imsrc2spsin+'medium'+imsrc2spdes); 
$('#loader').wrap('<a href="' +linkimm2+ '"></a>'); 
$('.url').replaceWith('<p class="url"><br />Image<br /><input class="primary textbox" type="text" name="bbcode" value="[img]'+imsrc2spsin+'medium'+imsrc2spdes+'[/img]" size="70" onclick="this.focus();this.select()"><br />Linked Image<br /><input class="primary textbox" type="text" name="bbcode" value="[url=' +linkim2+ '][img]'+imsrc2spsin+'medium'+imsrc1spdes+'[/img][/url]" size="70" onclick="this.focus();this.select()"></p>'); 
}); 

$('img[src*="thumbs"]').css("-webkit-box-shadow","0px 0px 0px black, 0px 0px 0px black"); 
$(this).css("-webkit-box-shadow","2px 2px 2px black, 2px 1px 10px black"); 
}); 
//end second if 
} 

for (i=0; i<16; i++) { 
    magic(i); 
} 
+0

「功能」?至少嘗試六打。助手功能將是一個很大的(雙關)輸入幫助。 – 2011-09-01 17:30:51

+0

謝謝島,可能這裏有錯誤var linkim [$ index] = $(「。forumrow table a:has(img):eq(」+ index +「)」)。attr('href'); var imsrc [$ index] = $('。forumrow table')。find('img:eq('+ index +'。')')。attr('src');但是,非常感謝,我感嘆,因爲現在我明白我必須使用for循環:-) – user827253

+0

嗯,我真的沒有那麼糟糕。一些函數或可能的幾個類可能會清除這些,但它是jQuery。我只是想盡量減少打字:P。 – IslandCow