不需要的异步事件调度

unwanted asynchronous event dispatching

本文关键字:调度 事件 异步 不需要      更新时间:2023-09-26

我使用 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函数。使用全局标志进行过滤不起作用;如何解决这个问题?此致敬意。

我已经尝试了这个效果很好的解决方案:

// 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();
    }