当内部函数调用时,jQuery alert(event)不执行任何操作

时间:2011-11-18 19:48:19

标签: jquery javascript-events

这真的很奇怪。调用clear函数并重置该值后,将调用Filter更改函数。 WEIRD部分没有事件,但我对event != NULLevent != 'undefined'event != void 0等事件的检查不起作用!它吹过支票,好像事件确实存在一样。如果我尝试提醒事件...当有真正的点击事件时它可以正常工作但是当它被清除时它会完全杀死它而不会发出警报并且没有任何错误!

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

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

3 个答案:

答案 0 :(得分:0)

在“清除”功能中添加.trigger('change')

 page.find('.Filter').val("").trigger('change');

答案 1 :(得分:0)

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

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

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

jsfiddle:http://jsfiddle.net/PrALa/

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

答案 2 :(得分:0)

单击按钮时未调用过滤器的事件,问题是过滤器上的更改事件,当您离开输入框的焦点时更改触发。如果您在那里输入然后单击清除按钮,您将收到一个警告,例如点击清除导致事件被调用,但实际上您的change事件通过离开输入框的焦点被调用,删除更改事件。

将过滤器事件更改为

$('.Filter').live("keyup", function(event) {