jQuery.on(';change';)未触发

jQuery.on(';change';)未触发,jquery,onchange,Jquery,Onchange,我正在开发一个大型应用程序,它有很多JS模块。在其中一个系统中,正在使用此代码: var tinput = tmpl.find('[name="Filter[TravelTime][Selected]"]'); tinput.val(ui.value); tinput.trigger('change'); 它只是改变隐藏输入的值,并强制其处于“更改”状态 在另一部分中,我有一个简单的函数: $('body').on('change', selectorSlider, function(){ c

我正在开发一个大型应用程序,它有很多JS模块。在其中一个系统中,正在使用此代码:

var tinput = tmpl.find('[name="Filter[TravelTime][Selected]"]');
tinput.val(ui.value);
tinput.trigger('change');
它只是改变隐藏输入的值,并强制其处于“更改”状态

在另一部分中,我有一个简单的函数:

$('body').on('change', selectorSlider, function(){
console.log('fired');
});
它应该做的是在输入值更改时显示日志,但不会触发。 我也试过这样做:

$(selectorAvailableHolder).find(selectorSlider).on('change', function(){...}
var selectorSlider = '[name="Filter[TravelTime][Selected]"], [name="Filter[FlightTime][Selected]"]';
也没有成功。触发事件的唯一方法是使用pure.onchange:

$(selectorAvailableHolder).find(selectorSlider).get(0).onchange = function() {...}
这很有效。。。除了一个问题-selectorSlider在文档就绪时并不总是可用(它是从ajax请求生成并缓存的,所以缓存时可以工作-就像它在stert上可用一样,但在未缓存时不可用-因为我必须等待ajax响应,这需要几秒钟)

是否有任何方法可以调试此问题并找到更改事件无法正确传播的原因

当我直接在这里写代码时,代码中可能有一些拼写错误(目前无法访问任何基本代码)

选择器滑块的定义如下:

$(selectorAvailableHolder).find(selectorSlider).on('change', function(){...}
var selectorSlider = '[name="Filter[TravelTime][Selected]"], [name="Filter[FlightTime][Selected]"]';
试试这个:

$(selectorAvailableHolder).on('change', selectorSlider, function(){...}
祝你好运

试试这个:

var tinput = tmpl.find('[name="Filter[TravelTime][Selected]"]');
tinput.val(ui.value);
$('body').trigger('change:filter', [ tinput ]);
身体上

$('body').on('change:filter', function(event, tinput){
  console.log(tinput, 'fired change');
});

这里的
选择器或滑块是什么?对象,变量,如果选择符,那么它是什么?我已经在问题中添加了关于选择符或滑块的信息。这很简单。使用body使它更通用和防错,因此使用更具体的选择器;不能更改任何内容。它将不起作用,因为第二部分放在不同的模块中,与第一部分中的变量无关。@MarcinBobowski,您是否尝试过此代码?从第一个触发器开始-您发送您的
tinput
我明天会测试它-您建议第二部分tinput只是一个名称,不需要首先定义它?@MarcinBobowski,tinput发送自
$('body')。trigger('change:filter',[tinput])如果不需要,可以将其删除。在第二部分中,您从
函数(event,tinput){
,也需要删除OK,您是一个天才:)。现在请为我指出一个方向,我可以找到为什么这样做:)。