在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 += ''; }); 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(){ //... });