【发布时间】:2011-08-31 00:40:28
【问题描述】:
我已经将自己放在一个多选下拉列表用户控件中,如下所示:
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<div id="multiTop" class="multiTop">
<asp:Button ID="DropDownButton" CssClass="dropDownButton" Text="All" runat="server" />
</div>
<div ID="multiMain" class="multiMain" style="display:none">
<asp:Button ID="SelectAllButton" Text="All" runat="server" CssClass="allButton" OnClick="AllButton_Click" />
<asp:CheckBoxList ID="MultiCheckBox" runat="server" RepeatDirection="Vertical" AutoPostBack="true"
OnSelectedIndexChanged="MultiCheckBox_SelectedIndexChanged" CssClass="mutiCbl">
</asp:CheckBoxList>
</div>
</ContentTemplate>
</asp:UpdatePanel>
首先,我使用服务器端事件来显示和隐藏“multiMain”面板(现在是一个 div),只要按下 DropDownButton。后来稍微摆弄一下 Css,整个事情看起来就像一个下拉列表。
然而,主要问题是如果用户点击页面上的其他任何地方,与真正的下拉列表不同,下拉部分并没有消失。因此,我怀着沉重的心情求助于 Jquery,对此我几乎一无所知。
我正在寻找一些 jquery,它会在单击按钮时显示和隐藏 div,并在单击其他任何位置时隐藏 div。到目前为止,我想出了:
$(document).ready(function () {
var dropDownButton = $get('<%= DropDownButton.ClientID %>');
var multiMain = $get('<%= multiMain.ClientID %>');
dropDownButton.click(function () {
if (multiMain.is(":hidden")) {
multiMain.slideDown("slow");
}
else {
multiMain.slideUp("slow");
}
return false;
});
$(document).click(function () {
multiMain.hide();
});
multiMain.click(function (e) {
e.stopPropagation();
});
});
但是,单击下拉按钮或单击页面的其余部分时没有任何反应事件。有什么想法吗?
【问题讨论】:
-
您可以发布您的 ASPX 页面生成的 HTML 标记吗?另外,
$get是在哪里定义的?
标签: javascript jquery asp.net