Javascript 未在指定事件上触发事件处理程序

Javascript 未在指定事件上触发事件处理程序,javascript,jquery,events,javascript-events,Javascript,Jquery,Events,Javascript Events,我正在实现一个具有复杂数据字段依赖关系的用户输入表单。例如,收集用户地址的表单:国家、州和街道地址 当country字段更改时,我希望触发state字段的清理过程。当状态更改时,我需要干净的街道地址字段。它们像依赖树结构一样被链接起来 这是我在中的设置。它包含5个输入框。它们的依赖关系树是用HTML5数据属性实现的 我想将函数cleanSubtree绑定到每个输入框的change事件。因此,每当检测到更改时,此函数将清除所有相关字段。详情如下: $('input').on('change',f

我正在实现一个具有复杂数据字段依赖关系的用户输入表单。例如,收集用户地址的表单:国家、州和街道地址

当country字段更改时,我希望触发state字段的清理过程。当状态更改时,我需要干净的街道地址字段。它们像依赖树结构一样被链接起来

这是我在中的设置。它包含5个输入框。它们的依赖关系树是用HTML5数据属性实现的

我想将函数
cleanSubtree
绑定到每个输入框的
change
事件。因此,每当检测到更改时,此函数将清除所有相关字段。详情如下:

 $('input').on('change',function cleanSubtreeHandlerWrapper(e){
        var inputElem = $(this);
    return function(){
        e.stopPropagation(); 
        cleanSubtree(inputElem);
    };
});
但是,当我更改任何输入框的文本时,有界函数似乎不执行。 但是如果我直接调用它们,该函数将正常工作,例如,
cleanSubtree($('#i3')

请问
cleanSubtree
功能未触发的原因是什么

PS:我正在使用jQuery 2.1.4和Chrome 51.0.2704.103 m) 编辑:修复方法是更改包装器函数。以前的版本没有调用包装函数

    $('input').on('change',
              function cleanSubtreeHandlerWrapper(e){ //** seems not triggered
                  e.stopPropagation(); 
                  cleanSubtree($(this));
              });
更改:

     $('input').on('change',function processNodeHandlerWrapper(e){
        var inputElem = $(this);
    return function(){
        e.stopPropagation(); 
        cleanSubtree(inputElem);
    };
});
致:


$('input')。在('change',函数processNodeHandlerWrapper(e){
var inputElem=$(此值);
e、 停止传播();
清除子树(inputElem);
})
更改:

     $('input').on('change',function processNodeHandlerWrapper(e){
        var inputElem = $(this);
    return function(){
        e.stopPropagation(); 
        cleanSubtree(inputElem);
    };
});
致:


$('input')。在('change',函数processNodeHandlerWrapper(e){
var inputElem=$(此值);
e、 停止传播();
清除子树(inputElem);
})