Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery是否有一个与CSS3类似的:target伪类?_Javascript_Jquery_Css_Pseudo Class - Fatal编程技术网

Javascript jQuery是否有一个与CSS3类似的:target伪类?

Javascript jQuery是否有一个与CSS3类似的:target伪类?,javascript,jquery,css,pseudo-class,Javascript,Jquery,Css,Pseudo Class,jQuery是否有一个与CSS3类似的:target伪类 如果是这样的话,演示就好了 谢谢 内置的,我不这么认为,但你可以这样做: $(location.hash); 编辑:谢谢,格雷厄姆 另一个编辑:这里有一个jQuery的示例,相当于:target。因为较旧的浏览器可能无法识别window.onhashchange事件,并且location.hash通常在锚标记的onclick事件的处理程序末尾更新,从而使新的哈希在处理程序期间对jQuery选择器不可用,除非location.hash=t

jQuery是否有一个与CSS3类似的:target伪类

如果是这样的话,演示就好了


谢谢

内置的,我不这么认为,但你可以这样做:

$(location.hash);
编辑:谢谢,格雷厄姆

另一个编辑:这里有一个jQuery的示例,相当于:target。因为较旧的浏览器可能无法识别window.onhashchange事件,并且location.hash通常在锚标记的onclick事件的处理程序末尾更新,从而使新的哈希在处理程序期间对jQuery选择器不可用,除非location.hash=this.href.substringthis.href.indexOf;如果预先调用,我们必须使用单击的锚点的clipped href值作为选择器:

简单,只需执行以下操作:

   $(window.location.hash)

它将在同时支持和:target伪类的浏览器中工作,并在不支持IE7和IE8的浏览器中抛出错误。这是因为jQuery使用浏览器的原生document.querySelectorAll(如果可用),否则会返回选择器引擎。令人烦恼的是:

Sizzle几乎支持所有功能,甚至包括一些很少实现的部分,如转义选择器“.foo\+bar”、Unicode选择器和按文档顺序返回的结果。CSS 3选择器支持有几个值得注意的例外情况,做出此决定的原因可能是:

:根 :目标 :n最后一个孩子 :n个类型/:n个最后一个类型/:第一个类型/:最后一个类型/:仅类型 :朗 由于sizzle不支持:target,jQuery在旧浏览器中使用时将抛出错误

在各种浏览器中尝试此页面:

好消息是,自己添加一个:target选择器并不重要:

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

编辑:通过复制:target样式定义,将:target替换为.target,可以让IE7和IE8使用:target样式。请注意,您必须复制整个定义,因为如果您尝试在规则定义的选择器中使用:target伪类,IE8会阻塞它,根本不会解析规则。复制样式后,使用插件并使用以下代码:

$(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");
        });
    }
});

工作演示改编自:

我认为您不能选择psudo类。我很难看到:target概念如何与jQuery一起工作。@lonesomeday我也是!只是好奇老浏览器是否有退路?这很有趣。你能提供一个如下的演示吗:见下文-你不需要前缀,因为hash属性包含文本hash符号。啊,没错。我习惯于从location.hash中剥离字符,以至于有时我忘记了它的存在。抢手货