1

私は<select>箱を持っています:

<select id="myselect">
   <option value="1">one</option>
   <option value="2">two</option>
   <option value="3">three</option>
</select>

イベントがどのようにトリガーされたかに関係なくchange、プロパティを持つように、イベントを変更する必要があります。val_after_change

// THIS FUNCTION CANNOT BE MODIFIED
$('#myselect').change(function(e){
    // this should alert select value after change
    alert(e.val); 
});

ここでは だけでよいことはわかっていますalert $(this).val()が、実際の例はもっと複雑で が必要e.valです。これがselect2で機能することは知っていますが、ソースコードを理解できませんでした。

イベントを変更するにはどうすればよいですか? ラッパーなどを作成する必要がありますか? どんな助けでも感謝します。

編集:

プロパティをselects使用するライブラリのラッパーを作成しているため、イベント自体を変更できません。イベントがトリガーされたときに、プロパティが既に存在している必要があります。このようなものですが、デフォルトの動作にします。e.valchange

e = jQuery.Event('change', {val: 2});
$('#myselect').trigger(e);

Jsフィドル

4

1 に答える 1

0

私はそれを手に入れたとは確信していません。

(function ($){
   // keep a copy of the original "select2" function
   var lib_select2 = $.fn.select2;

   // wrap it into a call which 
   // first adds a listener to add the value as a property of the event,
   // then adds whatever extra stuff the library adds
   $.fn.select2 = function(){
        this.change(function(e){
            e.val = this.value;
        });

        lib_select2.apply(this, arguments);
   }
})(jQuery)
于 2013-03-18T13:36:44.433 に答える