jQuery 1.4.2 でselectタグの値をカーソルで変更した場合changeイベントが起動しない
まだ、IE6でしか確認してないけど…
ほとんどのブラウザで駄目だった
http://d.hatena.ne.jp/cyokodog/20101015/exchangeselect01
1.3だと問題なし。じゃあ1.3でいいやと思ったけど、1.3でformをsubmitすると画面の再描写が何故か重ったるい・・・何故??
というわけで1.4.2使いたいんでとりあえず以下処方を・・・
(function($){ $.fn.exChangeSelect = function (namespace, callback){ if ($.isFunction(namespace)) { callback = namespace; namespace = 'ex-change-select'; } $(this).each(function(){ var target = $(this); if (target.attr('tagName') != 'SELECT') return; var orgValue = target.val(), changeStart; target .bind('change.' + namespace, function(){ changeStart = 0; if (orgValue != target.val()) { orgValue = target.val(); callback.apply(this, arguments); } }) .bind('keydown.' + namespace, function(){ if (!changeStart) { changeStart = 1; orgValue = target.val(); } }) .bind('keyup.' + namespace, function(){ setTimeout(function(){ if (changeStart && orgValue != target.val()) { target.trigger( 'change.' + namespace ); } changeStart = 0; },0); }) }); } })(jQuery);
やれやれ・・・