如何设置JQuery .show/.hide而不重复Div选择器

4im*_*ble 4 javascript jquery refactoring dry

我想将此函数传递给True或False,并在此输入上列出元素show(true)或hide(false).

我目前正在使用这个功能......

        function SetElementVisibility(visible) {
        if (visible) {
            $("#Div1").show("slow");
            $("#Div2").show("slow");
            $("#Div3").show("slow");
        }
        else {
            $("#Div1").hide("slow");
            $("#Div2").hide("slow");
            $("#Div3").hide("slow");
        }
    }
Run Code Online (Sandbox Code Playgroud)

但我宁愿不为每个结果命名Div.重复自己.

我怎样才能将其重构为更干(不要重复自己)的例子?

谢谢,Kohan

bob*_*nce 9

使用方括号表示法根据visible变量选择方法名称:

$('#Div1, #Div2, #Div3')[visible? 'show' : 'hide']('slow');
Run Code Online (Sandbox Code Playgroud)


jan*_*mon 7

这应该工作:

function SetElementVisibility(visible) {
   $("#Div1,#Div2,#Div3")[visible]("slow");
}

// Display all
SetElementVisibility( "show" );

// Hide all
SetElementVisibility( "hide" );
Run Code Online (Sandbox Code Playgroud)

如果你不想使用"show""hide"作为参数,但truefalse你将不得不改变它一点点:

function SetElementVisibility(visible) {
   $("#Div1,#Div2,#Div3")[visible?'show':'hide']("slow");
}

// Display all
SetElementVisibility( true );

// Hide all
SetElementVisibility( false );
Run Code Online (Sandbox Code Playgroud)