在jquery搜索上添加location.hash

我有这个将显示结果的脚本

$('#searchList li').bind('click', function() { var li = $(this); var li_val = li.text(); $('.flagContainer img').attr('class', 'mediumFlag mediumFlag-'+li.attr('data-country-code')); $('.flagContainer').show(); el.val(li_val); el.addClass('selected'); el.blur(); doSearch(); }); } else { 

我想补充一下

 $('#searchList li').click(function(){ var hash = $(this).attr('href'); location.hash = hash; 

所以它会在位置栏中显示国家名称,例如www.myexample.com/search#india,但我用我的方法获得的是#undefined。
这是我的所有custom.js(不添加位置哈希:

 $(document).ready(function() { search_text = $('#quickFilterInput').val(); $('#quickFilterInput').val(search_text).addClass('defaultValue'); $('#quickFilterInput').focus(function() { if ( $(this).val()==search_text ) { $(this).val('').removeClass('defaultValue');; } }).blur(function() { if ( $(this).val()=='' ) { $(this).val(search_text).addClass('defaultValue');; } }); $('.flagContainer').hide(); $('#quickFilterInput').bind('keyup', function(e) { var el = $(this); var val = el.val().toLowerCase(); var w = ''; if ( val.length > 0 ) { el.removeClass('selected'); $('.flagContainer').hide(); if ( !el.hasClass('defaultValue') ) { var countries = new Array(); var found = false; var query = new Array(); var phone_val = new Array(); query.push({'country_lower':{like:val}}); var current_phone_val = ''; for ( i = 0; i  0 ) { phone_val = new Array(); phone_val.push(current_phone_val+'*'); } } if ( phone_val.length > 0 ) { phone_val.push(val); query.push({'country_number':phone_val}); } else { query.push({'country_number':val}); } db(query).order('title').each( function(r) { if ( $.inArray( r.country, countries ) < 0 ) { found = true; w += '
  • '+(r.country)+"

  • " countries.push(r.country); } }); if ( found ) { $('#searchList').html('').html(w); $('#searchList').fadeIn(); $('#searchList li').bind('click', function() { var li = $(this); var li_val = li.text(); $('.flagContainer img').attr('class', 'mediumFlag mediumFlag-'+li.attr('data-country-code')); $('.flagContainer').show(); el.val(li_val); el.addClass('selected'); el.blur(); doSearch(); }); } else { $('#searchList').html('').html('
    No countries found. Please refine your search by country first letters or dialing code
    '); $('#searchList').fadeIn(); } } } }).bind('blur', function() { $('#searchList').fadeOut(); }); $('.clearFilterInput').bind('click', function() { clearSearch(); }); }); function doSearch() { var el = $('#quickFilterInput'); var val = el.val(); var found = false; $('.ratesResults').hide(); var w = ''; db({ 'country_lower':{like:val.toLowerCase()} }).order('special','title').each( function(r) { found = true; var title = r.title; var special = false; if ( r.special == 'a' ) { special = true; } if ( title != val ) { title = title.replace(r.country, ''); } w += '
    '; w += '
    '; w += '

    '+title+'

    '; w += '
    '; w += '
    '; w += '

    '+(r.price)+' £

    '; w += '

    ('+(number_format(r.price_including_tax, 3))+' £ incl. VAT)

    '; w += '
    '; w += '
    '; w += '

    '+(r.plan_price)+'

    '; w += '
    '; w += '
    '; w += '

    '+(r.plan_minutes)+'

    '; w += '
    '; w += '
    '; w += '

    '+(r.plan_display)+'

    '; if ( r.plan_display != r.text_display ) { w += '

    '+(r.text_display)+'

    '; } w += '
    '; w += '
    '; w += ''; w += 'buy'; w += ''; w += '
    '; w += '
    '; }); if ( found ) { $('.ratesTitle').html('Rates to '+val); $('#ratesSearchResults').html(w); $('.my_vcust').hide(); $('.ratesResults').fadeIn(); $('#ratesSearchResults .ratesBlock.special').each( function() { $(this).find('.buttonContainer').css('height', ($(this).height()-10)+'px'); }); } } function clearSearch() { $('.ratesResults').fadeOut(); $('#ratesSearchResults').html(''); $('#quickFilterInput').val('').trigger('blur').removeClass('selected'); $('.flagContainer').hide(); $('.my_vcust').fadeIn(); } function isNumber(n) { return !isNaN(parseFloat(n)) && isFinite(n); }

    您正在选择li -element并将click事件附加到该元素。 这个li元素显然没有href属性,因此它是undefined 。 将其附加到底层元素:

     $('#searchList li a').click(function(){ //... });