我有这两个功能。
第一个写得很好,因为知道如何写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
答案 0 :(得分: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。
答案 1 :(得分:0)
//假设您有ul
,您也可以替换为ol
if(GetURLParameter('filter')!= "undefined"){
var $mydiv = $('#'+GetURLParameter('filter'));
$mydiv.closest('ul').children('li.active').removeClass('active');
$mydiv.parent().addClass('active');
}
答案 2 :(得分:0)
$( function () {
if( GetURLParameter( 'filter' ) != 'undefined' ) {
var filter = $( '#' + GetURLParameter( 'filter' ) ).parent();
filter.parent().children( 'li.active' ).removeClass( 'active' );
filter.addClass( 'active' );
}
} );
虽然我想说还有更多方法可以让这段代码变得更好。