jQuery警报(事件)在被内部函数调用时不执行任何操作

jQuery警报(事件)在被内部函数调用时不执行任何操作,jquery,javascript-events,Jquery,Javascript Events,这真的很奇怪。调用clear函数并重置值时,将调用Filter change函数。奇怪的是,没有事件,但我对类似事件的事件进行了任何检查!=空或事件!='“未定义”或事件!=无效0不工作!它通过检查,好像事件确实存在。如果我试图提醒事件。。。当有一个真正的点击事件时,它可以正常工作,但当clear调用它时,它会完全终止函数,而不会发出警报,也不会出现任何错误 $('.clear').live("click", function() { page.find('.Filter').val(""

这真的很奇怪。调用clear函数并重置值时,将调用Filter change函数。奇怪的是,没有事件,但我对类似事件的事件进行了任何检查!=空或事件!='“未定义”或事件!=无效0不工作!它通过检查,好像事件确实存在。如果我试图提醒事件。。。当有一个真正的点击事件时,它可以正常工作,但当clear调用它时,它会完全终止函数,而不会发出警报,也不会出现任何错误

$('.clear').live("click", function() {
   page.find('.Filter').val("");
});

$('.Filter').live("keyup change", function(event) {
if(event)
    alert(event);
else
    alert('works');
});

在清除函数中添加.trigger'change':


设置值不会触发更改事件,您需要手动触发它,如下所示:

$('.clear').live("click", function() {
   page.find('.Filter').val("").trigger( "change" );
});

$('.Filter').live("keyup change", function(event) {
if(event)
    alert(event);
});
jsfiddle:


如果删除触发器,则警报将不会显示,因为它未被触发。

单击按钮时不会调用筛选器的事件,问题是筛选器上的更改事件,当您离开输入框的焦点时,更改将触发。如果您在那里键入,然后单击“清除”按钮,您将得到一个警报,如单击“清除”导致调用事件,但实际上是您的更改事件通过离开输入框的焦点而被调用,请删除更改事件

将筛选事件更改为


$'.Filter'.livekeyup,functionevent{

当脚本更新某个值时,事件不会自动触发。这个问题与如果是这种情况,则警报将工作而不是使函数崩溃的问题是重复的。如果删除alertevent,则其余代码将执行…如果我有alertevent,则函数将死亡…但只有在单击“清除”时才会执行。那么为什么会这样做呢如果事件通过,但alertevent crashI不知道该告诉您什么,这里没有人可以复制您的问题…如果通过另一个函数使用.val清除某个元素的值,则不会调用该元素上的keyup或change事件。您必须向其他人提供更多信息以进一步帮助您。因为我已经在FF、Chrome和IE中进行了测试d没有问题。您使用的是什么版本的jQuery?问题出在什么浏览器中?并将您的确切代码复制到JSFIDLE中。此外,我不知道page.find.Filter.val;中的页面是什么。但是使用$'.Filter.val;。正如您之前所说的那样……由于clic的原因,焦点更改可能会调用更改事件king clear…这将使它与clear功能无关。但焦点改变时,我仍然没有任何事件。那么,你到底想做什么?你的问题是,当你单击“clear”按钮时,它会在你的输入框上引发一个事件。每个人都说过并证明其有效的过滤器不是。您的代码$'.Filter'.livekeyup change,functionevent{在输入具有focus keyup时释放键或在输入框外单击tab/更改时引发事件,您还试图做什么?如果希望清除按钮引发更改,则需要通过$'.Filter'.val.triggerchange;触发它;。
$('.clear').live("click", function() {
   page.find('.Filter').val("").trigger( "change" );
});

$('.Filter').live("keyup change", function(event) {
if(event)
    alert(event);
});