I have a JavaScript function that looks like this:
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"); } }
This will be triggered by the following code (from within the $(document).ready(function () {})
:
$('#extraFilterDropDownButton').click(function() { if ($('#F_ShowF').val() == 1) { $('#F_ShowF').val(0); } else { $('#F_ShowF').val(1); } UpdateFilterView(); });
The HTML for this is easy:
<div id="divCategoryFilter">...</div> <div style="clear:both;"></div> <div id="extraFilterDropDownButton" class="showhideExtra_down"> </div>
I have two problems with this:
When the panel is hidden and we press the div button (extraFilterDropDownButton
) the upper left part of the page will flicker and then the panel will be animated down.
When the panel is shown and we press the div button the panel will hide('slow')
, but the button will not change to the correct class even when we set it in the UpdateFilterView
script?
The correct class will be set on the button when hovering it, this is set with the following code:
$("#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'); } });
To change all classes for an element:document. getElementById("MyElement"). className = "MyClass"; (You can use a space-delimited list to apply multiple classes.)
To replace a class with another class, you can remove the old class using jQuery's . removeClass() method and then add the new class using jQuery's . addClass() method.
The method used for adding or removing the class to an element is the toggleClass() method.
In jQuery, the class and ID selectors are the same as in CSS. If you want to select elements with a certain class, use a dot ( . ) and the class name. If you want to select elements with a certain ID, use the hash symbol ( # ) and the ID name.
To set a class completely, instead of adding one or removing one, use this:
$(this).attr("class","newclass");
Advantage of this is that you'll remove any class that might be set in there and reset it to how you like. At least this worked for me in one situation.
Use jQuery's
$(this).addClass('showhideExtra_up_hover');
and
$(this).addClass('showhideExtra_down_hover');
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With