gpt4 book ai didi

javascript - 使用 .trigger ('resize' 时将参数传递给 $(window).on ('resize' )

转载 作者:行者123 更新时间:2023-11-28 18:37:36 29 4
gpt4 key购买 nike

我需要一种可靠的方法来检测 $(window).on('resize') 是否已由用户交互或 jQuery .trigger 调用触发。

我尝试了以下方法,但我似乎没有在函数调用中取回参数:

$(window).trigger('resize',[true]);

function prepareOnResize(e, triggered){ console.dir(triggered); }
$(window).on('resize',prepareOnResize);

Triggered似乎返回了屏幕的宽度,所以我尝试了以下方法,也无济于事:

$(window).trigger('resize',[true]);

function prepareOnResize(e, width, height, triggered){ console.dir(triggered); }
$(window).on('resize',prepareOnResize);

在该实例中,触发返回未定义

我在这里不知所措——任何帮助将不胜感激。

最佳答案

您可以尝试以下方法;

Javascript...在 dom 上准备就绪...

var $window = $(window);

$window.on('resize', function(event, param1) {

console.log("Window resized event triggered by...");

if (typeof param1 === 'undefined') // could also do if(param1) to test for false
console.log("System Event");
else
console.log("User Event");

// Another way to check is to check the originalEvent property
// if (e.originalEvent === undefined) alert ('triggered by code');
// else alert ('triggered by system');

});

setTimeout(function() {
$window.trigger("resize", ["Custom"]);
}, 2000);

这或多或少是您在代码中尝试的,它将区分两种类型的事件。

我还制作了一个 jsFiddle 所以你可以看到: https://jsfiddle.net/sysdevcode/4w3b8e14/

使其在您的代码上运行

$(window).trigger('resize',[true]);

function prepareOnResize(e, width, height, triggered){ console.dir(triggered); }
$(window).on('resize',prepareOnResize);

您需要更改 prepareOnResize() 函数中参数的顺序,as $(window).trigger('resize',[true]); 相当于将 [true] 作为函数中的“width”参数发送。例如,您需要这样做:

var $window = $(window);
$window.trigger('resize',[ $window.width(), $window.height(), true ]);

然后

function prepareOnResize(e, width, height, triggered){ ... }

可以工作,但如果您不需要传递任何参数,那么上面代码的 e.isTrigger 可能会更优雅一些。

关于javascript - 使用 .trigger ('resize' 时将参数传递给 $(window).on ('resize' ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36777631/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com