【发布时间】:2011-07-09 11:16:13
【问题描述】:
我有一个如下所示的 JavaScript 函数:
function UpdateFilterView() {
if (_extraFilterExists) {
if ($('#F_ShowF').val() == 1) {
$('#extraFilterDropDownButton').attr('class', "showhideExtra_up");
$('#extraFilterDropDownButton').css("display", "block");
if ($('#divCategoryFilter').css("display") == 'none') {
$('#divCategoryFilter').show('slow');
}
return;
} else {
if ($('#divCategoryFilter').css("display") == 'block') {
$('#divCategoryFilter').hide('slow');
}
$('#extraFilterDropDownButton').css("display", "block");
$('#extraFilterDropDownButton').attr('class', "showhideExtra_down");
return;
}
} else {
if ($('#divCategoryFilter').css("display") != 'none') {
$('#divCategoryFilter').hide('fast');
}
$('#extraFilterDropDownButton').css("display", "none");
}
}
这将由以下代码触发(来自$(document).ready(function () {}):
$('#extraFilterDropDownButton').click(function() {
if ($('#F_ShowF').val() == 1) {
$('#F_ShowF').val(0);
} else {
$('#F_ShowF').val(1);
}
UpdateFilterView();
});
HTML 很简单:
<div id="divCategoryFilter">...</div>
<div style="clear:both;"></div>
<div id="extraFilterDropDownButton" class="showhideExtra_down"> </div>
我有两个问题:
-
当面板被隐藏并且我们按下 div 按钮 (
extraFilterDropDownButton) 时,页面的左上部分会闪烁,然后面板会向下动画。 -
当显示面板并按下 div 按钮时,面板将
hide('slow'),但即使我们在UpdateFilterView脚本中设置了按钮,该按钮也不会更改为正确的类?
悬停按钮时会在按钮上设置正确的类,使用以下代码设置:
$("#extraFilterDropDownButton").hover(function() {
if ($('#divCategoryFilter').css("display") == 'block') {
$(this).attr('class', 'showhideExtra_up_hover');
} else {
$(this).attr('class', 'showhideExtra_down_hover');
}
},
function() {
if ($('#divCategoryFilter').css("display") == 'block') {
$(this).attr('class', 'showhideExtra_up');
} else {
$(this).attr('class', 'showhideExtra_down');
}
});
【问题讨论】:
-
只是一个建议:如果您发布一个 minimal 代码示例来证明您的问题,您的问题可能更有机会在这里得到回答,最好使用jsFiddle。跨度>
-
总而言之...您是否只是要求一个按钮来显示隐藏的 div,然后在显示时隐藏 div?
-
“但按钮不会更改为正确的类” - 哪个是正确的类..? “当面板隐藏时” - 我不明白你所说的面板是什么意思..?
标签: javascript html jquery