2012-12-20 48 views
0

我有这两个功能。我该如何清理这个javascript jquery

第一个写得很好,因为知道如何写js的人做了它。

第二次我做了。

var GetURLParameter = function($param){ 
    var sPageURL = window.location.search.substring(1); 
    var sURLVariables = sPageURL.split('&'); 
    for(var i = 0; i < sURLVariables.length; i++) { 
     var sParameterName = sURLVariables[i].split('='); 
     if (sParameterName[0] == $param) { 
      return sParameterName[1]; 
     } 
    } 
} 


if(GetURLParameter('filter')!= "undefined"){ 
    $('#'+GetURLParameter('filter')).parent().parent().children('li.active').removeClass('active') 
    $('#'+GetURLParameter('filter')).parent().addClass('active'); 
} 

我想为我重复行GetURLParameter('filter')简化电话,但我不知道我怎样才能使它的工作方式类似于关键字this

+6

这可能是更适合http://codereview.stackexchange.com/ – j08691

+1

我只在这里看到一个函数? – Jrod

回答

3

就藏匿在变量的中间值:

var $filter = GetURLParameter('filter'); 

if($filter != "undefined") { 
    var $parent = $('#' + GetURLParameter('filter')).parent(); 

    $parent.parent().children('li.active').removeClass('active'); 
    // better alternative (thanks wirey) 
    // $parent.siblings('li.active').removeClass('active') 

    $parent.addClass('active'); 
} 

当然这具有可读性更强的优势,并且还更有效,因为它不会再重新运行相同功能或DOM多次查询。

+2

只有改善才会是'$ parent.parent()。children('li.active')'到'$ parent.siblings('li.active')' –

+0

@wirey nice catch – McGarnagle

0

//假设你有ul,你也可以用ol

if(GetURLParameter('filter')!= "undefined"){  
    var $mydiv = $('#'+GetURLParameter('filter')); 
    $mydiv.closest('ul').children('li.active').removeClass('active'); 
    $mydiv.parent().addClass('active');  
} 
0
$(function() { 
    if(GetURLParameter('filter') != 'undefined') { 
     var filter = $('#' + GetURLParameter('filter')).parent(); 
     filter.parent().children('li.active').removeClass('active'); 
     filter.addClass('active'); 
    } 
}); 

更换虽然我会说还有更多的方法,你可以让这段代码更好。