ドロップダウン ボタンのような Twitter ブートストラップ用のこの jQuery プラグインを参照してください。確かに、改善の余地はたくさんあります。また、私はCSSがあまり得意ではありません。というわけで、その部分を残しました。
http://codepen.io/ismusidhu/pen/ptHql
HTML
<div id="quickActions" class="btn-group" data-key="split-button">
<a data-name="quickAction" data-value="customer" data-defaultButton="true">New Customer</a>
<button type="button" id="xyz" data-toggle="dropdown">
<span class="caret"></span>
<span class="sr-only">Toggle Dropdown</span>
</button>
<ul data-role="menu" hidden>
<li><a data-name="quickAction" data-value="customer">Customer</a></li>
<li><a data-name="quickAction" data-value="supplier">Supplier</a></li>
<li><a data-name="quickAction" data-value="quote">Quote</a></li>
<li><a data-name="quickAction" data-value="invoice">Invoice</a></li>
<li><a data-name="quickAction" data-value="purchase">Purchase</a></li>
<li><a data-name="quickAction" data-value="reconcile">Bank</a></li>
</ul>
</div>
CSS
[data-key="split-button"].open > [data-role="menu"] {
display: block;
}
プラグイン
(function( $ ) {
// Plugin definition.
$.fn.splitButton = function(options) {
// Iterate and reformat each matched element.
return this.each(function() {
var splitButton = $(this);
var handle = $('[data-toggle="dropdown"]', splitButton);
var buttons = $('ul li a', splitButton);
var defaultButton = $('[data-defaultButton="true"]', splitButton);
handle.click(function() {
$(this).parent().toggleClass('open');
});
var clickHandler = function(e) {
var $this = $(e.currentTarget);
//alert($this.attr('data-value'));
if (!$this.attr('data-defaultButton')) {
defaultButton.attr("data-value", $this.attr('data-value')).html($this.html());
}
};
buttons.click(clickHandler);
defaultButton.click(clickHandler)
$(document).click(function(event) {
if (!$(event.target).closest(handle).length) {
if ($(handle.parent()).hasClass("open")) {
$(handle.parent()).toggleClass('open');
}
}
});
});
};
})( jQuery );
使用法
$('#quickActions').splitButton();