不需要的异步事件调度

时间:2016-04-28 12:13:52

标签: javascript jquery events

我对“'属性设置'进行了编码窗口与jqxWidgets(滑块,颜色控件),以设置视觉对象属性(颜色,边框宽度等) 在每个jqxWidget上,我声明一个函数,以便检测更改并在可视对象上应用此更改。 因此,当使用鼠标选择对象时,我会禁用回调:

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

然后我强制jqxWidget为对象值:

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

然后我启用了事件触发器:

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

但似乎异步机制在强制值之前启用事件触发器,因此调用the_width_on_change_callback函数。 使用全局标志来过滤不起作用;怎么解决这个? 最好的问候。

1 个答案:

答案 0 :(得分: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();
    }