Javascript 扩展/';折叠全部与单个

Javascript 扩展/';折叠全部与单个,javascript,jquery,html,Javascript,Jquery,Html,我在扩展/折叠菜单时遇到问题。在菜单上,我尝试做两件事:首先是展开/折叠所有。那很好用。作为参考,我的代码如下: $("#expandAll dt a").click(function () { $("dd").slideToggle(); }); function excol() { $("#expand dt a").click(function () { $(this).parent().siblings("

我在扩展/折叠菜单时遇到问题。在菜单上,我尝试做两件事:首先是展开/折叠所有。那很好用。作为参考,我的代码如下:

$("#expandAll dt a").click(function () {
                $("dd").slideToggle();
            });
function excol() {
    $("#expand dt a").click(function () {
        $(this).parent().siblings("dd").slideToggle();
    });
}
我只是要求它将slidetoggle函数应用于所有dd标记

我还想展开列表中的一个项目,而其余项目保持折叠状态。然而,当我这样做的时候,它会扩展整个列表,除了我想要的那一个,我正在寻找的完全相反的行为。单件的代码如下所示:

$("#expandAll dt a").click(function () {
                $("dd").slideToggle();
            });
function excol() {
    $("#expand dt a").click(function () {
        $(this).parent().siblings("dd").slideToggle();
    });
}
我的“this”语句应该是“向上/向下切换带有标记dd的单个元素,该标记dd是该元素父元素的兄弟元素”。问题是,它会切换除我要切换的dd之外的每个dd

以下是相关的jquery代码:

       //Upon successful ajax call
    success: function (data) {


        excol();

        $("#expandAll dt a").click(function () {
            $("dd").slideToggle();
        });
    },

});

}

function excol() {
$("#expand dt a").click(function () {
    $(this).parent().siblings("dd").slideToggle();
});
}
以下是html代码:

<div id="expandAll">

                <dl>
                    <dt>
                        <a style="font-size: 12px; color: black;"     href="#">Expand/Collapse All</a>
                    </dt>
                </dl>

                <div id="expand">
                    <div id="mhsPrograms">
                        <div id="MHS">
                        </div>
                    </div>
                    <br />
                </div>
</div>



我想我已经很接近解决方案了,但是在某个我没有看到的地方有一个冲突。任何帮助都将不胜感激。

明白了!问题是expand all函数的位置。我没有把所有的代码都放在这里,因为我不认为这是相关的…我现在看到了我的方式的错误,并将张贴它所有。无论如何,我需要做的是将expand/collapseall函数放入我的documentready函数中。因此,我的代码如下所示:

$(document).ready(function () {
//Call process function
processListItems(Url, Listname);
excolAll();
//*************************
//processListItems function
//*************************


});
exolAll()是问题函数。我仍然不完全理解操作,但现在它可以工作了

完整代码如下所示,以供参考:

$(document).ready(function () {
//Call process function
processListItems(Url, Listname);
excolAll();
//*************************
//processListItems function
//*************************


});

function processListItems(url, listname, complete, failure) {
// Executing our items via an ajax request 
$.ajax({
    url: url + "/_api/web/lists/getbytitle('" + listname + "')/items?    $orderby=SortOrder",
    method: "GET",
    headers: { "Accept": "application/json; odata=verbose" },
    //Upon successful ajax call
    success: function (data) {

        ewiArray(data);
        excol();
        //excolAll();
        joinAll();

    },
});
}

//complete(data);// Returns JSON collection of the results                   

//Function for expanding/collapsing menu
function excol() {
$("#expand dt a").click(function () {
    $(this).parent().siblings("dd").slideToggle();
});
}

//Function for expanding/collapsing all
function excolAll() {
$("#expandAll dt a").click(function () {
    $("dd").slideToggle();
});
}

//Function for joining EWI program to its associated description
function joinAll() {
$("button").click(function () {
    var fired_button = $(this).val();
    sessionStorage.setItem('ewiNum', fired_button);
    window.location.href = "Application.aspx";
    return false;
});
}

编辑:当我分别试用这两个函数时,它们都可以工作。但是当我把扩展全部包括进来的时候,问题就开始了,因此我没有看到可能的冲突。