定制器:微件同步触发器两次

时间:2017-02-25 作者:superwinner

我刚刚注意到widget-synced 当您试图编辑小部件、单击文本字段、编写内容、触发时,会触发两次widget-synced 一次之后,如果你点击其他任何地方,它会再次触发。

enter image description here

这是默认行为吗?在自定义小部件中可以防止吗?

谢谢

Pinging@WestonRuter

2 个回复
最合适的回答,由SO网友:Weston Ruter 整理而成

原因是小部件将在上运行其更新逻辑keydown 同时打开change 对于给定的input 要素看见https://github.com/WordPress/wordpress-develop/blob/4.7.2/src/wp-admin/js/customize-widgets.js#L891-L907

当将小部件添加到定制器中以将这些PHP驱动的接口引入JS驱动的上下文中时,会有一些折衷。这并不完美,因此这也是JS Widgets 功能插件,使自定义小部件在自定义程序中的实现方式现代化。

如果您真的只想侦听小部件实际更改其状态的时间,那么可以侦听控件的底层setting 改为更改。在给定的keydown 以及随后的change 事件

SO网友:superwinner

我设法修复了它,不知道这是否是正确的方法,这是在可排序字段的情况下,使用停止事件并检查“应用”按钮是否在小部件中:https://jsfiddle.net/6h5t5r6y

相关推荐

My widgets do not save

每次我保存我的小部件并离开页面时,我的小部件都会消失。侧边栏已完全清空,不会保存任何更改。控制台或PHP日志中没有任何错误。如果我将小部件直接复制并保存在数据库中widgets_text, 它们将被显示,但我仍然无法在侧边栏中添加或删除任何内容。这只发生在我的右侧边栏上,左侧边栏工作正常,但它们都以相同的方式注册。这是我注册侧边栏的方式:function my_widgets_init() { register_sidebar( array ( \'name\'