【问题标题】:jquery: hover function only if element is not .clickedjquery:仅当元素未单击时才具有悬停功能
【发布时间】:2011-11-09 03:28:20
【问题描述】:

我一直在尝试设置以下脚本,但没有成功。

我有元素#num_11,它在悬停时淡入其他几个元素,并在鼠标移出时淡出。这是完美的工作(我已经很自豪了)

我想要的是,如果您点击#num_11,其他元素保持可见。再次点击时,它们应该会再次消失,整个脚本会回到原来的“模式”

$("#num_11").hover(
    function(){
        $("#identification li").each(function() {
            $("h1", this).fadeIn();
            $("span", this).addClass("opague");
        });
    },
    function(){
        $("#identification li").each(function() {
            $("h1", this).hide();
            $("span", this).removeClass("opague");
        });
    }
);

$("#num_11").click(function(){
    $(this).toggleClass('clicked');
});

我在上面的代码中尝试的是把 $("#num_11").not(".clicked").hover( 和 $("#num_11:not(".clicked")").hover(以及最后陷入混乱的 if-else-query……

非常感谢您对我的挑战的帮助。

一切顺利, 克

【问题讨论】:

  • 你不会接受答案吗?

标签: jquery class if-statement fadein click


【解决方案1】:

试试下面的代码;

$("#num_11").hover(
function(){
  if(!$(this).hasclass('clicked')){
    $("#identification li").each(function() {
        $("h1", this).fadeIn();
        $("span", this).addClass("opague");
    });
  }
},
function(){
  if(!$(this).hasclass('clicked')){
    $("#identification li").each(function() {
        $("h1", this).hide();
        $("span", this).removeClass("opague");
    });
  }
});
$("#num_11").click(function(){
$(this).toggleClass('clicked');
});

【讨论】:

  • 谢谢 Chamika,这对我有用!我不知道为什么在我无奈的尝试中没有想到这个解决方案;)
【解决方案2】:

尝试过滤:

$("#num_11").filter(function() {
    return !$(this).hasClass('clicked');
}).hover(
    ...
);

【讨论】:

  • 您好 rkw,感谢您的快速回答。不幸的是,这个解决方案并没有带来结果——行为与没有过滤的情况完全相同。但我喜欢你只多写一行代码的方法
  • 我刚刚意识到一件事,#num_11 是单个元素,还是假设它代表一组元素?
猜你喜欢
  • 2010-12-12
  • 1970-01-01
  • 2011-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-04
  • 1970-01-01
相关资源
最近更新 更多