使用.trigger('resize')时将参数传递给$(window).on('resize') [英] Passing parameters to $(window).on('resize') when using .trigger('resize')

查看:718
本文介绍了使用.trigger('resize')时将参数传递给$(window).on('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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆