使用.trigger('resize')时将参数传递给$(window).on('resize') [英] Passing parameters to $(window).on('resize') when using .trigger('resize')
问题描述
S / O!
我需要一种可靠的方法来检测 $(窗口).on('resize')
已被用户互动或jQuery .trigger
电话解雇。
I need a reliable way to detect if $(window).on('resize')
has been fired by user interaction or by a jQuery .trigger
call.
我试过了以下,但我似乎没有在函数调用中返回参数:
I've tried the following, but I don't seem to get the parameters back in the function call:
$(window).trigger('resize',[true]);
function prepareOnResize(e, triggered){ console.dir(triggered); }
$(window).on('resize',prepareOnResize);
触发似乎返回屏幕的宽度,所以我尝试了以下,也无济于事:
Triggered seems to return the width of the screen, so I tried the following, also to no avail:
$(window).trigger('resize',[true]);
function prepareOnResize(e, width, height, triggered){ console.dir(triggered); }
$(window).on('resize',prepareOnResize);
在该实例中,触发返回 undefined
。
In that instance triggered comes back undefined
.
我在这里不知所措 - 任何帮助都将不胜感激。谢谢!
I'm at a loss here -- any help would be greatly appreciated. Thanks!
推荐答案
jQuery在事件对象中放置一个属性 isTrigger
,您可以测试:
jQuery puts a property isTrigger
in the event object, which you can test:
function prepareOnResize(e){
if (e.isTrigger) {
console.log('resize via jQuery trigger');
} else {
console.log('resize by user');
}
}
或者您可以使用 e .originalEvent
,jQuery只有本机事件对象才有,如上所述这里:
Alternatively you can use e.originalEvent
, which jQuery only the native event object has, as mentioned here:
function prepareOnResize(e){
if (!e.originalEvent)
console.log('resize via jQuery trigger');
} else {
console.log('resize by user');
}
}
这篇关于使用.trigger('resize')时将参数传递给$(window).on('resize')的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!