Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.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
Javascript 如何以更精简的方式编写jQuery代码?_Javascript_Jquery_Html_Jquery Animate - Fatal编程技术网

Javascript 如何以更精简的方式编写jQuery代码?

Javascript 如何以更精简的方式编写jQuery代码?,javascript,jquery,html,jquery-animate,Javascript,Jquery,Html,Jquery Animate,我有以下jQuery代码: $('#menu .selected').removeClass('selected'); $('#homel').addClass('selected'); $('#home').slideDown(150, function() { $('#public').slideUp(200); $('#login').slideUp(200); $('#faq').slideUp(200);

我有以下jQuery代码:

$('#menu .selected').removeClass('selected');
      $('#homel').addClass('selected');
      $('#home').slideDown(150, function() {
        $('#public').slideUp(200);
        $('#login').slideUp(200);
        $('#faq').slideUp(200);

      });
您可以猜到,它隐藏并显示
div
框。在这个例子中,
#homel
是Home链接,
#Home
是Home div。这看起来不错,但是如果我想添加一个新框,例如,
#register
我必须在这里和其他框中添加代码(
#public
#login
#faq
),代码:
$('register')。slideUp(200)
有没有什么方法可以简化,让所有人都通用


编辑:jsFiddle链接对于示例您可以给这三个东西一个类,并使用它来操作它们(“public”、“login”和“faq”元素),或者:

如果你给这些东西上了一堂课,你就会说

$('.slideMeUp').slideUp(200);
或者别的什么。如果您只想影响外部容器内的容器:

$('#home').slideDown(300, function() {
  $(this).find('.slideMeUp').slideUp(200);
});
编辑-啊,好吧,现在我看看你的标记,我知道交易是什么了。在这种情况下,我个人会使用“data-”属性将菜单中的
元素与它们应该控制的页面部分关联起来。为此,菜单标签如下所示:

<a href="./#/home" class="menu-item selected" id="homel" data-section='home'>Home</a>
然后,您可以从所有“.menu”部分的div中删除类“selected”,将“selected”添加到新选择的类中,然后向上滑动所有其他类:

    $('.content .menu-section:not(.selected)').slideUp(200);

您可以将这三个元素设置为一个类,并使用它对它们进行操作(“public”、“login”和“faq”元素),或者:

如果你给这些东西上了一堂课,你就会说

$('.slideMeUp').slideUp(200);
或者别的什么。如果您只想影响外部容器内的容器:

$('#home').slideDown(300, function() {
  $(this).find('.slideMeUp').slideUp(200);
});
编辑-啊,好吧,现在我看看你的标记,我知道交易是什么了。在这种情况下,我个人会使用“data-”属性将菜单中的
元素与它们应该控制的页面部分关联起来。为此,菜单标签如下所示:

<a href="./#/home" class="menu-item selected" id="homel" data-section='home'>Home</a>
然后,您可以从所有“.menu”部分的div中删除类“selected”,将“selected”添加到新选择的类中,然后向上滑动所有其他类:

    $('.content .menu-section:not(.selected)').slideUp(200);
这是一个不同的解决方案。我给了所有h3 div一个公共类,并用一个选择器选择它们。这样,您就不必每次添加另一个div时都更改代码。还有一个用于
slideUp
的函数。现在所有路由都可以使用相同的函数,不需要很多匿名函数

这是最终的结果

HTML

<div id="menu">
    <a href="./#/home" class="selected" id="homel">Home</a> <a href="./#/public" id="publicl">Public</a> <a href="./#/users/login" id="loginl">Login</a> <a href="./#/faq" id="faql">FAQ</a>
</div>
<div id="content">
    <div id="home" class="h3div">
        <h3>Welcome</h3>
    </div>
    <div id="public"class="h3div">
        <h3>Public</h3>
    </div>
    <div id="login"class="h3div">
        <h3>Login</h3>
    </div>
    <div id="register"class="h3div">
        <h3>Register</h3>
    </div>
    <div id="faq" class="h3div">
        <h3>Frequently Asked Questions</h3>
    </div>
</div>
最终结果的工作示例是。

是不同的解决方案。我给了所有h3 div一个公共类,并用一个选择器选择它们。这样,您就不必每次添加另一个div时都更改代码。还有一个用于
slideUp
的函数。现在所有路由都可以使用相同的函数,不需要很多匿名函数

这是最终的结果

HTML

<div id="menu">
    <a href="./#/home" class="selected" id="homel">Home</a> <a href="./#/public" id="publicl">Public</a> <a href="./#/users/login" id="loginl">Login</a> <a href="./#/faq" id="faql">FAQ</a>
</div>
<div id="content">
    <div id="home" class="h3div">
        <h3>Welcome</h3>
    </div>
    <div id="public"class="h3div">
        <h3>Public</h3>
    </div>
    <div id="login"class="h3div">
        <h3>Login</h3>
    </div>
    <div id="register"class="h3div">
        <h3>Register</h3>
    </div>
    <div id="faq" class="h3div">
        <h3>Frequently Asked Questions</h3>
    </div>
</div>

最终结果的工作示例是。

将所有内容移动到函数中会显著缩短代码

函数折叠(e)
{
$('#menu.selected').removeClass('selected');
$('#'+e+'l').addClass('selected');
$('#'+e).slideDown(150,function(){
e=='public'| |$('public')。slideUp(200);
e=='login'| |$('login')。slideUp(200);
e=='faq'| |$('faq')。幻灯片(200);
e=='home'| |$('home')。slideUp(200);
});
}
$(文档).ready(函数(){
元路线({
“/”:函数(){
$(#home')。向下滑动(200);
},
“/home”:函数(){collapse('home');},
“/public”:函数(){collapse('public');},
“/users/:what”:函数(参数){
if(params.what==“login”| params.what==“register”)
折叠(“登录”);
},
“/faq”:函数(){collapse('faq');},
});
});

将所有内容移动到函数中会大大缩短代码

函数折叠(e)
{
$('#menu.selected').removeClass('selected');
$('#'+e+'l').addClass('selected');
$('#'+e).slideDown(150,function(){
e=='public'| |$('public')。slideUp(200);
e=='login'| |$('login')。slideUp(200);
e=='faq'| |$('faq')。幻灯片(200);
e=='home'| |$('home')。slideUp(200);
});
}
$(文档).ready(函数(){
元路线({
“/”:函数(){
$(#home')。向下滑动(200);
},
“/home”:函数(){collapse('home');},
“/public”:函数(){collapse('public');},
“/users/:what”:函数(参数){
if(params.what==“login”| params.what==“register”)
折叠(“登录”);
},
“/faq”:函数(){collapse('faq');},
});
});

我们可以看到一些HTML标记吗?需要为此提供一些代码,或者提供一个jsfiddle让我举个例子:)您是否尝试将#public#login括起来#常见问题。。。在a中?@macjohn是的,我在a#content div中有所有的div。其他人:我添加了一个jsiddle链接。我们可以看到一些HTML标记吗?需要提供一些代码,或者一个jsiddle让我jsiddle举个例子:)您是否尝试将#public,#login括起来#常见问题。。。在a里面?@macjohn是的,我在a#content div里面有所有的div。其他人:我添加了一个jsidle linkhaha感觉像个白痴:P我尝试了没有逗号的方法:)看起来不错,谢谢,尽管我想看到其他解决方案haha感觉像个白痴:P我尝试了没有逗号的方法:)看起来不错,谢谢,虽然我想看看其他解决方案非常感谢,这是最好的:)非常感谢,这是最好的:)