0

この2つの機能があります。

最初のものは、js の書き方を知っている人が書いたので、よく書かれています。

私がした2番目。

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

4

3 に答える 3

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 を複数回クエリしたりしないため、より効率的です。

于 2012-12-20T17:50:09.360 に答える
0

// があると仮定すると、次のようulに置き換えることもできますol

if(GetURLParameter('filter')!= "undefined"){    
    var $mydiv = $('#'+GetURLParameter('filter'));
    $mydiv.closest('ul').children('li.active').removeClass('active');
    $mydiv.parent().addClass('active');    
}
于 2012-12-20T17:50:44.500 に答える
0
$( function () {
   if( GetURLParameter( 'filter' ) != 'undefined' ) {
      var filter = $( '#' + GetURLParameter( 'filter' ) ).parent();
      filter.parent().children( 'li.active' ).removeClass( 'active' );
      filter.addClass( 'active' );
   }
} );

ただし、このコードをより良くする方法はまだ他にもあります。

于 2012-12-20T17:53:27.783 に答える