我目前正在尝试根据触发的“点击”事件调用回调。这种方法是一种注销方式,仅在单击按钮后才可用。
当我在控制台中执行触发命令时,keyup
事件处理程序在触发后按预期工作。
但是尝试使用以下代码自动执行此过程不起作用:
let editorSwitchTmce = jQuery( ".wp-editor-tabs .switch-tmce" ),
editorCallback = function() {
tinyMCE.activeEditor.on( "keyup", function () {
console.log( tinyMCE.activeEditor.getContent() );
});
};
editorSwitchTmce.bind("click", function () {
editorCallback();
});
editorSwitchTmce.trigger( "click" );
问题是,在单击之前 activeEditor
为空。那么为什么这不起作用?我的意思是我正在触发点击并期望 activeEditor
设置得像我在浏览器控制台中手动设置一样?
最佳答案
有两种方法可以解决此问题 - 这些取决于代码中的其他约束。更好的方法是在 mouseup
上调用 editorCallback()
:
editorSwitchTmce.bind( "mouseup", function () {
editorCallback();
});
这假设您的应用中其他地方的其他代码在该点击阶段的 mouseup 事件之前已初始化 tinyMCE.activeEditor
。
如果做不到这一点,您可以选择在短暂的超时后调用 editorCallback()
- 这个想法是 tinyMCE.activeEditor
在超时持续时间结束后初始化:
editorSwitchTmce.bind( "click", function () {
setTimeout(function() {
editorCallback();
}, 100);
});
超时方法实际上是解决此问题的最后一道“逃生 channel ”(即,如果您无法更正应用程序的整体设计等)。它可能会导致微妙的系统或短暂的视觉副作用,因此请谨慎使用。
希望对您有所帮助!
关于javascript - jQuery:事件触发后未调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57350351/