【问题标题】:Bind onkeydown after TinyMCE is already initiated在 TinyMCE 已经启动后绑定 onkeydown
【发布时间】:2012-10-14 08:48:09
【问题描述】:

我喜欢在 tinyMCE 已经为站点启动之后绑定事件 onKeyDown。

$('#content_ifr').keydown(...); 在这里不起作用。那怎么办呢?

【问题讨论】:

  • jQuery 选择器无效...显示 HTML。另外你在哪里调用你的keydown?显示更多代码

标签: javascript jquery html tinymce


【解决方案1】:

首先,您的 jQuery 选择器无效...它正在寻找一个肯定不存在的 tagName content_ifr。 假设元素的 ID 为 content_ifr 使用:

$('#content_ifr').keydown(...);

要在 TinyMCE 初始化后调用它,请使用配置对象中的 TinyMCS oninit 回调。

参考文档:http://www.tinymce.com/wiki.php/Configuration:oninit

您可以随时使用 jQuery 事件委托来调用您的代码,而无需使用 jQuery on()delegate() 方法在 TinyMCE 配置中调用它

编辑:如果元素是一个 iframe,我怀疑它来自选择器,您需要使用 contents() 方法在 iframe 中绑定 keydown 事件

http://api.jquery.com/on/

http://api.jquery.com/delegate/

【讨论】:

  • 谢谢。没错,它是无效的 - 写得很快。我正在为 wordpress 编写一个插件,因此无法侵入 init 回调。不幸的是,我需要以其他方式获取 keydown 或内容更改。
  • 然后使用委托方法,它们也可以为未来的元素调用。不太清楚总体问题是什么
  • 如果元素是 Iframe,则添加额外信息
【解决方案2】:
$('#'+your_editor_id + '_ifr').bind('keydown',function(){
    //do what you like here with the event
});

【讨论】:

  • keydown() 只是bind('keydown... 的快捷方式,因此切换不会给问题带来任何新的东西。 api.jquery.com/keydown 您还将生成一个无效的选择器,并显示代码
  • 为什么我会生成一个无效的选择器?
【解决方案3】:

你可以这样写:

$('content_ifr').bind('keydown',function(){
    //your code goes here
 });

【讨论】:

  • 有什么区别??阅读keydown() 的文档,这只是bind('keydown'... 的快捷方式@api.jquery.com/keydown
  • 这只有在 html 源元素的 id 为 "content" 时才有效!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-11
  • 2020-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-21
相关资源
最近更新 更多