元素是语句与If语句在悬停时没有正确响应相结合

时间:2014-08-11 20:31:57

标签: javascript jquery html css

这里真的需要一些JQuery帮助。我即将推出笔记本电脑。我已经用这段代码走了很长一段路,我觉得我几乎就在那里,但我陷入了最后的障碍。

我只是在这里包含相关的代码片段,因为它是一个非常大的部分。

我有一个模拟太阳系的导航菜单。如果你想看到整个东西,这里是更大的外部作品的链接。 http://jsbin.com/zagiko/1/edit(请注意,这主要用于CSS3)。

我有一个导航菜单,当您点击导航菜单中的值时,当前脚本会分配一个活动类。这一切都很完美。我内置了一个按钮来测试点击活动状态,状态变化正常。但我需要它来回应悬停状态的变化。我不是JQuery人;我在学习。这似乎是悬停不起作用,因为它响应页面加载时加载的数据而不是实时响应。但我只是在猜测。

我需要的是一个if语句,它将响应实时数据(不是在页面加载时或文档准备好时)。 if语句基本上应该说这个div是否有效,那么这个其他div可以在悬停时出现。但是如果这个div没有激活那么它就不会出现了。

我写的当前if语句是

if($("a.active").is('.uranus')){
    $('#uranus .infos').hover( 
        function () {
            $("#descriptionsp").fadeIn("2000");
        })
    };

当网站加载设置菜单时运行的当前脚本是:

$(window).load(function(){
    var e=$("body"),
        t=$("#universe"),
        n=$("#solar-system"),
        r=function() {
            e.removeClass("view-2D opening").addClass("view-3D").delay(2e3).queue(function() {
                $(this).removeClass("hide-UI").addClass("set-speed");

                $(this).dequeue()})
        },
        i=function(e){
            t.removeClass().addClass(e)
        };

    $("#toggle-data").click(function(t){
        e.toggleClass("data-open data-close");
        t.preventDefault()
    });

    $("#toggle-controls").click(function(t){
        e.toggleClass("controls-open controls-close");
        t.preventDefault()
    });

    $("#data a").click(function(e){
        var t=$(this).attr("class");
        n.removeClass().addClass(t);
        $(this).parent().find("a").removeClass("active");
        $(this).addClass("active");
        e.preventDefault()
    });

真的需要你的帮助。提前谢谢!

1 个答案:

答案 0 :(得分:1)

现在,只有在加载javascript时才会检查您的代码块。目前,.uranus元素可能未处于活动状态,因此不会发生任何事情。

首先,您希望在文档内部移动此块,否则您的元素.uranus可能甚至不存在。

你的逻辑非常接近,但你需要在hover函数中移动if语句,如下所示:

$('#uranus .infos').hover(
        function () {
            if($("a.active").is('.uranus')){
                $("#descriptionsp").fadeIn("2000");
            }
        });

这样,每次将鼠标悬停在#uranus .infos上时,如果.uranus也是.active

,它只会执行代码