2011-07-17 169 views
0

我有一個jQuery搜索腳本,它使用選項卡爲用戶定義他們要使用的搜索類型。當用戶搜索時,創建一個類似於#類型的網址/查詢 /。如果#類型位於URL中,則與該類型對應的選項卡顯示爲選中狀態。但是,如果查詢也在url中(#類型/查詢 /)該選項卡未被選中。用我的代碼下面,我怎麼能做到這一點,所以它會忽略/ 查詢 /?後的一切。我希望你能理解我想要描述的東西。在jQuery選項卡腳本中通過url定義選定的選項卡

我的jQuery腳本是:

$(document).ready(function() { 
    $('[id^=type_]').click(function() { 
     type = this.id.replace('type_', ''); 
     $('[id^=type_]').removeClass('selected'); 
     $('#type_' + type).addClass('selected'); 
     return false; 
    }); 
    if (window.location.hash != "") { 
     url = window.location.hash.replace('#', ''); 
     $('#type_' + url).click(); 
    } else { 
     $('#type_search').click(); 
    } 
    $('#query').keyup(function() { 
     var query = $(this).val(); 
     var url = '/' + type + '/' + query + '/'; 
     window.location.hash = '' + type + '/' + query + '/'; 
     document.title = $(this).val() + ' - My Search'; 
     $('#results').show(); 
     if (query == '') { 
      window.location.hash = ''; 
      document.title = 'My Search'; 
      $('#results').hide(); 
     } 
     $.ajax({ 
      type: 'GET', 
      url: url, 
      dataType: 'html', 
      success: function (results) { 
       $('#results').html(results); 
      } 
     }); 
    }); 
    var textlength = $('#query').val().length; 
    if (textlength <= 0) { 
     $('#query').focus(); 
    } else { 
     $('#query').blur(); 
    } 
}); 
+0

你可以做一個http://jsfiddle.net來演示嗎? –

+0

如果URL是'http:// www.example.com /#type/query/someOtherString',您希望腳本將它視爲'http://www.example.com/#type/query/ '?或者你是否希望去掉'#type /'後面的所有內容,將它看作是:'http:// www.example.com /#type /'? –

+0

難道你只是想爲URL做一個子字符串並檢測第一個'/'的位置? –

回答

1

我想出了一個略顯笨拙的方法是:

$('a').each(
    function(){ 
     var url = this.href; 
     var hashAt = url.indexOf('#'); 
     var nextSlashAt = url.indexOf('/',hashAt); 
     var url = url.substring(0,nextSlashAt); 
     var tab = url.substring(hashAt); 
     $(this).text(url + " (" + tab + ")."); 
    }); 

JS Fiddle demo

顯然,而不是通過a元素迭代,你要到url變量分配到window.location;,但從此之後,應該很容易地適應您的需求,我想。


參考文獻:

+0

可能吧,是的。作爲一個出發點,找出你需要的這個解決方案的哪些部分,然後去掉那些你不需要的部分。爲了使它更簡單?你必須展示一個現場演示,我可以看到發生了什麼,這可能涉及(可能)一個人爲的[JS Fiddle演示](http://jsfiddle.net/)(因爲'window.location' wouldn'那就是你想要的);或者在您控制的網站上進行現場演示。 –

+1

那麼,你可以在'#上'分割()'並搜索第一個'/'。 http://jsfiddle.net/FjxKr/1/ –

+1

* Oooh *,** + 1 **簡潔@Jared! =) –

相關問題