2011-12-15 100 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/

相关问题