morimotoです。
前回の「jQueryでシンプルにExpanderを作る」の続編です。
前回作成したものを使ってみて思ったこと、「うーん、いまいち!」
ということで改良してみました。
(function($){ var options = { initCollapse: true, bindEvent: 'click', collapsedClass: 'collapsed' }; $.fn.simpleExpander = function(target, opts){ if (opts) { $.extend(options, opts); } $(this).addClass('simpleExpander'); if (options.initCollapse) $(this).addClass(options.collapsedClass); return initializeExpander(this, target, options); }; function initializeExpander(trigger, target, options) { toggleTarget(trigger, target, options.collapsedClass); $(trigger).bind(options.bindEvent, function(){ $(this).toggleClass(options.collapsedClass); toggleTarget(trigger, target, options.collapsedClass); }); return $(trigger); } function toggleTarget(trigger, target, collapsedClass) { if(target) $(trigger).hasClass(collapsedClass) ? $(target).hide() : $(target).show(); } })(jQuery);
使い方
expand/collapseする対象をjQueryオブジェクトで指定する
Demo
クリックすると…
朝食にバナナボートを食べました。冗談です。
Code
<p id="expander-test-1" style="border:1px solid #666;background-color: #FEE">test 1</p> <div id="test-1"> <span>朝食にバナナ<b>ボート</b>を食べました。<b>冗談です。</b></span> </div> <script type="text/javascript"><!-- $('#expander-test-1').simpleExpander($('#test-1').find('b')); // --></script>
Optionを入れてみる
Demo
マウスを乗せると…
Expand対象とExpand対象外もselector次第です。
Code
<p id="expander-test-2" style="border:1px solid #666;background-color: #FEE">マウスを乗せると...</p> <div id="test-2"> <span><b>Expand対象</b>と<b>Expand対象外</b>もselector次第です。</span> </div> <script type="text/javascript"><!-- $('#expander-test-2').simpleExpander($('#test-2').find('span b:first'), {initCollapse: false, bindEvent: 'mouseover'}); // --></script>
以上、morimotoでした。。。