代码之家  ›  专栏  ›  技术社区  ›  Anriëtte Myburgh

jquery的行为很奇怪

  •  1
  • Anriëtte Myburgh  · 技术社区  · 14 年前

    我有一个jquery脚本,在父容器内的容器之间淡入淡出。根据单击的按钮(设计、Web),它确定哪个容器( #design , #web )淡出,哪一个淡出。

    现在,关键在这里,这两个容器( α设计 , 网织物 )高度不同,因此当我淡出和淡入这些容器之间时,页面将直接跳到 fadeIn() 函数调用完成。那个位置 (x,y) 与没有容器时页面所处的位置完全相同( α设计 , 网织物 )在父容器(即空容器)内可见,页面一直滚动到 底部 .

    以前有人遇到过这个吗?任何建议都非常感谢,因为这个问题一直困扰着我。

    另外,我已经在Firefox和Safari中测试过了这两个版本,并且都显示了相同的问题。

    //编辑1: 以下是您可以查看的URL: http://toolboxstudio.co.za/version3/?page=packages

    如果要查看容器的外观为空: http://toolboxstudio.co.za/version3/?page=packages#empty ,然后您可以单击横幅下方的按钮(设计或Web)。它将淡入正确的内容,并在两者之间切换。确保您的页面只适合包含空容器的整个页面,页脚下没有多余的空间。然后单击按钮并向下滚动一小段,在两个按钮之间切换。你会明白我对翻页的意思。

    代码如下:

    $("div.design.button a").click(function () {
        $(this).parent("div").addClass("active");
        $("div.web.button").removeClass("active");
    
        if ($("div.web_content").is(":visible")) {
            $("div.web_content").fadeOut(function () {
                $("div.design_content").fadeIn();
            });
        } else {
            $("div.design_content").fadeIn();
        }
        window.location.hash = "#design";
        resizeWindow();
    
        e.returnValue = false;
        e.preventDefault();
    
        return false;
    
        alert("hello");     
    });
    
    $("div.web.button a").click(function () {
        $(this).parent("div").addClass("active");
        $("div.design.button").removeClass("active");
    
        if ($("div.design_content").is(":visible")) {
            $("div.design_content").fadeOut(function () {
                $("div.web_content").fadeIn();
                return false;
            });
        } else {
            $("div.web_content").fadeIn();
            return false;
        }
        window.location.hash = "#web";
        resizeWindow();
    
        e.returnValue = false;
        e.preventDefault();
    
        return false;
    
        alert("world");
    });
    
    2 回复  |  直到 14 年前
        1
  •  1
  •   Anriëtte Myburgh    14 年前

    我想我把代码改成了:

    $("div.design.button a").click(function () {
        $(this).parent("div").addClass("active");
        $("div.web.button").removeClass("active");
    
        if ($("div.web_content").is(":visible")) {
            $("div.web_content").fadeOut();
            $("div.design_content").fadeIn();
                return false;
        } else {
            $("div.design_content").fadeIn();
        }
        window.location.hash = "#design";
        resizeWindow();
    
        e.returnValue = false;
        e.preventDefault();
    
        return false;
    
        alert("hello");     
    });
    
    $("div.web.button a").click(function () {
        $(this).parent("div").addClass("active");
        $("div.design.button").removeClass("active");
    
        if ($("div.design_content").is(":visible")) {
            $("div.design_content").fadeOut();
            $("div.web_content").fadeIn();
        } else {
            $("div.web_content").fadeIn();
        }
        window.location.hash = "#web";
        resizeWindow();
    
        e.returnValue = false;
        e.preventDefault();
    
        return false;
    
        alert("world");
    });
    

    @加兰巴拉兹:

    不,我不认为是这样,因为我先把它去掉了,什么也没变。我只是没有怀疑是我犯的回调函数错误造成的。

    抱歉,我真的为此挣扎了好几个小时,StackOverflow一直是我最后的选择。然后我决定尝试一些方法,这就成功了。

    抱歉,我无法上传代码,因此您可以看到我所说的“它现在可以工作”,Seacom已关闭,我们的可用资源有限,我们的FTP端口现在被阻止。

        2
  •  1
  •   user372551    14 年前

    您好,Anri_«tte Combrink,您完全忘记在Click事件处理程序中提到该事件,

    我想 return false 就够了,

    请删除以下行

    e.returnValue = false;
    e.preventDefault();
    

    因为你没有指定 e (事件)您不能使用 返还价值 , 防止违约

    我想这应该行,如果不行,请告诉我们

    祝您今天过得愉快!!