Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Jquery`trigger`延迟处理调用_Javascript_Jquery_Event Handling - Fatal编程技术网

Javascript Jquery`trigger`延迟处理调用

Javascript Jquery`trigger`延迟处理调用,javascript,jquery,event-handling,Javascript,Jquery,Event Handling,我有一段代码使用JQuery侦听DOM元素上的初始化事件 var$button=$(“#myButton”) $button.on(“init”,函数(){ log(“你好”) }) $button.trigger(“init”) 您好好的,就像评论中提到的那样,您不能也不应该在创建列表器之前触发事件 但这里有一个我已经准备好的快速黑客解决方案(因为为什么不呢?)\_(ツ)_/”) 工作示例: 添加以下代码并将$button.trigger(“init”)替换为$button.\u trig

我有一段代码使用
JQuery
侦听DOM元素上的初始化事件

var$button=$(“#myButton”)
$button.on(“init”,函数(){
log(“你好”)
})
$button.trigger(“init”)


您好
好的,就像评论中提到的那样,您不能也不应该在创建列表器之前触发事件

但这里有一个我已经准备好的快速黑客解决方案(因为为什么不呢?)\_(ツ)_/”)

工作示例:

添加以下代码并将
$button.trigger(“init”)
替换为
$button.\u trigger(“init”)


p.s请不要使用此代码。仅仅因为它是可行的,并不意味着应该这样做。

不,不创建事件就不能触发事件。感谢您的努力,但我认为这不会通过代码审查:D。
/**
 * Create a callable trigger alternative
 * @param   {String}    name
 * @param   {Mixed}     ...params       Addition paramaters to send with event
 */
$.fn._trigger = function(name, ...params) {
    var $el = this;

        // Keep looping every 100ms until the event listner is found
    $el.myEventFinder = setInterval(function() {
        // Get an object of attached event listeners
        var events = $._data($el.get(0), 'events');

        // Has the event been found?
        if (events[name]) {
                // Stop the eventFinder loop
            clearInterval($el.myEventFinder);
            // Trigger event
            $el.trigger(name, ...params);
        }
    }, 100);
};