如何向 jQuery .hover() 添加条件

发布于 2024-10-31 12:49:00 字数 367 浏览 0 评论 0原文

我想使用 jQuery 悬停功能并且可以毫无问题地这样做。

 $(".tag").hover(function() { $(this).addClass("tag-over"); }, function() { $(this).removeClass("tag-over"); });

然而,在某些情况下,由于 click 事件,我已经添加了 tag-over 类,但我不希望在用户移除鼠标时将其删除。

如果 tag-over 类尚未附加到元素,如何仅执行 addClass() 和 rmeoveClass()。

如果这个解释不好,请告诉我。

I want to use the jQuery hover function and can do so with no problem.

 $(".tag").hover(function() { $(this).addClass("tag-over"); }, function() { $(this).removeClass("tag-over"); });

However in some circumstances I will have already added the tag-over class due to a click event, but I don't want it remove when the user removes the mouse.

How do I only perform the addClass() and rmeoveClass() if the tag-over class is not already attached to the element.

Please let me know if that explanation is no good.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

南…巷孤猫 2024-11-07 12:49:00

实际上,您可能希望为点击事件使用不同的选择器:tag-focus 或类似的东西。这样你的元素就可以同时拥有这两个类,这并不重要,更容易跟踪。

You actually want to probably have a different selector for the click event: tag-focus or something like that. That way your element can have both classes and it won't matter, much simpler to keep track of.

因为看清所以看轻 2024-11-07 12:49:00

如果我理解你的问题,你可以使用 :not() ,我认为这将是最好处理这个问题。

$(".tag:not(.tag-over)").hover(function() { $(this).addClass("tag-over"); }, function() { $(this).removeClass("tag-over"); });

If I understand your question, you can use :not(), which I think would be the best of dealing with this.

$(".tag:not(.tag-over)").hover(function() { $(this).addClass("tag-over"); }, function() { $(this).removeClass("tag-over"); });
微凉徒眸意 2024-11-07 12:49:00

我认为这样的事情应该做到这一点:

$('.tag').hover(function() {
    var $this = $(this);

    if ($this.hasClass('tag-over')) {
        $this.data('tag-over-existed', true);
    } else {
        $this.addClass('tag-over');
    }
}, function() {
    var $this = $(this);

    if (!$this.data('tag-over-existed')) { // i.e. if we added the class ourselves
        $this.removeClass('tag-over');
    }

    $this.removeData('tag-over-existed');
});

这使用 data 方法来存储有关特定元素的信息。

I think something like this should do it:

$('.tag').hover(function() {
    var $this = $(this);

    if ($this.hasClass('tag-over')) {
        $this.data('tag-over-existed', true);
    } else {
        $this.addClass('tag-over');
    }
}, function() {
    var $this = $(this);

    if (!$this.data('tag-over-existed')) { // i.e. if we added the class ourselves
        $this.removeClass('tag-over');
    }

    $this.removeData('tag-over-existed');
});

This uses the data method to store information about a particular element.

远山浅 2024-11-07 12:49:00

为什么不尝试为点击事件添加 tagover 类,为悬停事件添加 tag-over 类?

希望这有帮助

why don't you try to add class tagover for click event and tag-over for hover event?

Hope this helps

念﹏祤嫣 2024-11-07 12:49:00

虽然这里并不是一个优雅的解决方案。

不好的一点是,它添加了 click 类来检查。

$('.tag').hover(
    function (){
        $(this).addClass("tag-over"); 
    },
    function (){
        if(!$(this).hasClass('clicked')){
            $(this).removeClass("tag-over"); 
        }
    }
).click(function (){
            $(this).addClass('click');
        })

Not elegant solution though here.

Bad thing about it, it adds click class to check.

$('.tag').hover(
    function (){
        $(this).addClass("tag-over"); 
    },
    function (){
        if(!$(this).hasClass('clicked')){
            $(this).removeClass("tag-over"); 
        }
    }
).click(function (){
            $(this).addClass('click');
        })
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文