Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/79.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
Jquery和:活动选择器_Jquery_Html_Css_Css Selectors - Fatal编程技术网

Jquery和:活动选择器

Jquery和:活动选择器,jquery,html,css,css-selectors,Jquery,Html,Css,Css Selectors,这是我的代码: $('#ss a:active').parent().addClass('ss-active'); 我想你可以从我的代码中看出我想做什么,但它不起作用,我该怎么做?我还希望当用户从按钮上移除鼠标时,恢复到正常状态,我所说的“用户从按钮上移除鼠标”的意思是,用户只能按住按钮一段时间,并且应该看到:active语句 我不能用css实现这一点,因为我需要该的父级 //在这里,我是如何让它工作的 $('#solicita a').mousedown(function() {

这是我的代码:

$('#ss a:active').parent().addClass('ss-active');
我想你可以从我的代码中看出我想做什么,但它不起作用,我该怎么做?我还希望当用户从按钮上移除鼠标时,恢复到正常状态,我所说的“用户从按钮上移除鼠标”的意思是,用户只能按住按钮一段时间,并且应该看到
:active
语句

我不能用css实现这一点,因为我需要该
的父级

//在这里,我是如何让它工作的

    $('#solicita a').mousedown(function() {
    if($(this).parent().hasClass('solicita-hover'))
    {
        $(this).parent().removeClass('solicita-hover');
        $(this).parent().addClass('solicita-active');
    }
}).mouseleave(function() {
    $(this).parent().removeClass('solicita-active');
});
尝试使用mousedown()事件:

在jQuery中“:”是一个他们称之为元字符的字符。“:”后面的通常是jQuery选择器语法,如“:file”或“:has()”

“:active”是CSS伪类,因此使用“:”表示伪类与jQuery选择器语法要求相冲突


综上所述,您可以尝试使用jQueryAPI中建议的两个反斜杠来转义“:”。不过,我还没有试过

通过设置一个虚拟CSS关键帧,并在与正在侦听的选择器匹配时侦听animationstart事件,您实际上可以在体面的浏览器(Firefox、Chrome、IE10+)中侦听选择器规则匹配。这里有一篇博文深入探讨了它的本质,并提供了一个很小的文档/元素扩展addSelectorListener,以使其更易于使用:

a为jQuery新手提供了详细的答案 您应该对Javascript中的事件发生顺序有一些了解。当浏览器看到您编写的脚本时,它会从上到下(大部分情况下)一次解析一行

因此,当它在jQuery中读取CSS()选择器时,它将查看您指定的选择器当前状态下的文档。这意味着,如果您编写
$('#my id div').addClass('some class')
,它将在该特定时刻在id为
my id
的元素中查找div,并向其添加类

如果在
#my id
中添加更多的div,它们将不会收到任何额外的类,因为浏览器最初读取该行Javascript时它们不在那里

因此,在最初的问题中,当询问者编写
$('#ss a:active').parent().addClass('ss-active')
,浏览器仅在读取该行的毫秒处查找
#ss a:active

因此,我们必须绑定Javascript事件,以便检测将来可能发生的事情


这就是为什么我们最终不得不做一些类似于
$('#ss a').mousedown(函数).mouseup(函数)
的事情。因为这会告诉jQuery和浏览器您正在等待(或)事件发生。

您应该将twerq的解决方案标记为问题的答案
$('#ss a').mousedown(function() {
 $(this).parent().addClass('ss-active');
}).mouseup(function() {
 $(this).parent().removeClass('ss-active');
});