2016-04-28 3 views
0

ビジュアルオブジェクトの属性(色、境界線の幅など)を設定するために、jqxWidgets(スライダ、カラーコントロール)を使用して '属性設定'ウィンドウをコードします。 各jqxWidgetで、変更を検出し、この変更をビジュアルオブジェクトに適用します。 ので、オブジェクトをマウスで選択されたときに、私はコールバックを無効にします。不要な非同期イベントディスパッチ

$('#width').on('change', undefined);

その後、私は値をオブジェクトへjqxWidgetを強制:

$('#width').jqxSlider('setValue', object.width);

をそれから私は、イベントトリガーを有効に:

$('#width').on('change', the_width_on_change_callback);

しかし、それはse非同期メカニズムは、値が強制される前にイベントトリガーを有効にするので、the_width_on_change_callback関数が呼び出されます。 フィルタリングのためにグローバルフラグを使用すると機能しません。これを解決するには? よろしくお願いいたします。

+0

'$( '#幅') .on( 'change'、undefined); '以前に設定されたリスナーを削除しない – NDM

+0

'enablのようなクラスの追加や削除に基づいて提案が見つかりました。 ed。良い方法ですか? – maiagarbot

答えて

0

私はうまく機能し、このソリューションを試してみました:

// on selection 
$('#node_label')[0].classList.remove('enabled'); 
// force widget value 
$('#node_label').jqxInput('val', node.label); 
// enable event processing 
$('#node_label')[0].classList.add('enabled'); 

とコールバック関数の中で:

$('#node_label').on('change', this.on_change_node_label); 

...

this.on_change_node_label = function (event) { 
    event.stopPropagation(); 
    event.preventDefault(); 
    if (! this.classList.contains('enabled')) return; 
    var value = $('#node_label').val(); 
    } 
関連する問題