javascript - Making a JQuery button act as a dropdown -
take jquery ui button sample reference: http://jqueryui.com/demos/button/#splitbutton
now, how implement dropdown when click small button? caution transformation .button() actual button messes offset coordenates.
to sum it, need opinions on how correctly implement dropdown on click of jquery button integrates current theme.
thanks! alex
i made , looks picture above.
blogged here , i'm posting code bellow.
please refer blog post deeper explanation.
css
<style type="text/css"> .itemactionbuttons{} .itemactionbuttons .saveextraoptions { display: none; list-style-type: none; padding: 5px; margin: 0; border: 1px solid #dcdcdc; background-color: #fff; z-index: 999; position: absolute; } .itemactionbuttons .saveextraoptions li { padding: 5px 3px 5px 3px; margin: 0; width: 150px; border: 1px solid #fff; } .itemactionbuttons .saveextraoptions li:hover { cursor: pointer; background-color: #dcdcdc; } .itemactionbuttons .saveextraoptions li { text-transform: none; } </style>
html
<div class="itemactionbuttons"> <div class="buttonset" style="float: right;"> <input id="btndelete" type="button" value="delete" class="button" onclick="itemactionbuttons.ondeleteclick.apply(this)" /> <input id="btncancel" type="button" value="cancel" class="button"onclick="itemactionbuttons.oncancelclick.apply(this)" /> </div> <div id="divsavebutton" class="buttonset" style="float: right;"> <input id="btnsave" type="button" value="save" class="button" onclick="itemactionbuttons.onsaveclick.apply(this)" /> <input id="btnsaveextra" type="button" class="button" value="+" onclick="itemactionbuttons.onsaveextraclick.apply(this)" /> <ul class="saveextraoptions ui-corner-bottom" id="btnsaveextraoptions"> <li onclick="$('#btnsaveextraoptions').toggle(); itemactionbuttons.saveandnewclick.apply(this)">save , new</li> <li onclick="$('#btnsaveextraoptions').toggle(); itemactionbuttons.saveandcopyclick.apply(this)">save , copy</li> </ul> </div> </div>
javascript
<script type="text/javascript"> $(document).delegate('#btnsaveextra', 'mouseleave', function () { settimeout(function(){ if (!itemactionbuttons.ishovermenu) { $('#btnsaveextraoptions').hide(); }}, 100, 1) }); $(document).delegate('#btnsaveextraoptions', 'mouseenter', function () { itemactionbuttons.ishovermenu = true; }); $(document).delegate('#btnsaveextraoptions', 'mouseleave', function () { $('#btnsaveextraoptions').hide(); itemactionbuttons.ishovermenu = false; }); var $ishoverextraoptionsflag = 0; $(document).ready(function () { $(".button").button(); $(".buttonset").buttonset(); $('#btnsaveextra').button({ icons: { primary: "ui-icon-plusthick" } }); $('#btnsaveextraoptions li').addclass('ui-corner-all ui-widget'); $('#btnsaveextraoptions li').hover( function () { $(this).addclass('ui-state-default'); }, function () { $(this).removeclass('ui-state-default'); } ); $('#btnsaveextraoptions li').mousedown(function () { $(this).addclass('ui-state-active'); }); $('#btnsaveextraoptions li').mouseup(function () { $(this).removeclass('ui-state-active'); }); }); var itemactionbuttons = { ishovermenu: false, allowdelete: function (value) { value ? $("#btndelete").show() : $("#btndelete").hide() }, allowcancel: function (value) { value ? $("#btncancel").show() : $("#btncancel").hide(); }, allowsave: function (value) { value ? $("#btnsave").show() : $("#btnsave").hide() }, allowsaveextra: function (value) { value ? $("#btnsaveextra").show() : $("#btnsaveextra").hide() }, ondeleteclick: function () { }, oncancelclick: function () { }, onsaveclick: function () { }, onsaveextraclick: function () { $('#btnsaveextraoptions').toggle(); var btnleft = $('#divsavebutton').offset().left; var btntop = $('#divsavebutton').offset().top + $('#divsavebutton').outerheight(); // +$('#divsavebutton').css('padding'); var btnwidth = $('#divsavebutton').outerwidth(); $('#btnsaveextraoptions').css('left', btnleft).css('top', btntop); }, saveandnewclick: function () { }, saveandcopyclick: function () { } } </script>
Comments
Post a Comment