2011-12-15 103 views

回答

5

內置的,我不這麼認爲,但你可以傑裏 - 鑽機一個像這樣:

$(location.hash); 

編輯:謝謝,格雷厄姆

ANOTHER編輯:這裏是jQuery的相當於:target一個的例子。由於舊的瀏覽器可能不識別window.onhashchange事件,location.hash是在處理程序的錨標記的onclick事件(在處理過程中呈現不可用jQuery選擇新的哈希,除非location.hash = this.href.substring(this.href.indexOf('#'));預先調用)的最後更新一次,我們要用點擊的錨的修剪href值作爲選擇,而不是:http://jsfiddle.net/xPMzV/

1

簡單,只是做:

$(window.location.hash) 
3

它將同時支持document.querySelectorAll():target僞瀏覽器工作類,並在不包含IE7和IE8的瀏覽器中拋出錯誤。這是因爲jQuery使用瀏覽器的原生document.querySelectorAll()如果有的話,並回落到sizzle選擇器引擎,否則。煩人,Sizzle does not support the :target selector

灒幾乎所有CSS 3 Selectors支持 - 這甚至包括很少被實施,諸如逃脫選擇(「包含.foo \ +酒吧」),統一選擇,並導致文檔順序返回某些部分。有幾個顯着的例外CSS 3選擇支持(該決定的理由可以found here):

  • :根
  • :目標
  • :第n-最後孩子
  • :第n-的型/:第n-最後的型/:第一的型/:最後的型/:僅-的型
  • :郎()

由於嘶嘶不支持:target,jQuery的,當它在舊的瀏覽器是用來將拋出一個錯誤。

在不同的瀏覽器試試這個頁面:http://jsfiddle.net/gilly3/NPNFg/

好消息是,它是微不足道的給自己加:target選擇:

$.expr[":"].target = function (node) { 
    var t = location.hash.substr(1); 
    return t && node.id == t || node.name == t; 
} 

工作演示:http://jsfiddle.net/gilly3/NPNFg/3/

編輯:你可以通過複製:target樣式定義使IE7和IE8與:target樣式一起使用, cing :target.target。請注意,您將不得不復制整個定義,因爲如果您嘗試在規則定義的選擇器中使用:target僞類,則IE8會扼殺它,並且根本不解析規則。複製您的樣式後,使用hashchange插件,並使用此代碼:

$(function() { 
    try { 
     $(":target"); 
    } 
    catch (err) { 
     $.expr[":"].target = function (node) { 
      var t = location.hash.substr(1); 
      return t && node.id == t || node.name == t; 
     } 
     $(window).hashchange(function() { 
      $(".target").removeClass("target"); 
      $(":target").addClass("target"); 
     }); 
    } 
}); 

工作演示改編自your jsfiddlehttp://jsfiddle.net/gilly3/c9BvU/6/

相關問題