保存小部件后如何重新绑定事件

时间:2013-03-19 作者:Lea Cohen

我正在编写一个小部件,它的表单元素附带了一个单击事件。我使用jQuery绑定它。

但是,单击save, 绑定丢失。也就是说,单击这些元素不会再触发该函数。

我试着用on() jQuery方法,如建议的here, 但这无助于:

    var buttonsHolder=jQuery(\'#widgets-right .icon_buttons\');            
    // save the array of big icons, for later reference, and assign them the click event
    var  buttons=buttonsHolder.children(\'input\');
    buttons.on("click",function(){
        openPanel(jQuery(this),jQuery(this).index());
    });
我可以把我的js 小部件表单中的代码,如建议的here. 这确实解决了问题,但我真的更愿意js 代码分隔。

即使在save 是否单击按钮?

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

因为正在重建输入框(或整个表单),所以我遵循了其他地方给我的建议,并没有将on()绑定到输入框,而是将其绑定到更高的位置,并使用事件委派:

jQuery(\'#widgets-right\').on(\'click\',\'.icon_buttons input\',function(){
     openPanel(jQuery(this),jQuery(this).index());
});
我仍然在小部件表单中放置了一些js变量声明,但这只是为了方便起见,而且只需要几行代码,所以我不太介意。

SO网友:Sergey Arefiev

Wordpress为小部件交互提供回调。你似乎对其中两个很感兴趣:

小部件已添加,小部件已更新

用法示例:

jQuery(document).on(\'widget-updated\', function(e, widget){
    // do your awesome stuff here
    // "widget" represents jQuery object of the affected widget\'s DOM element
});

结束

相关推荐

用更新的版本覆盖默认的jQuery UI库

jquery ui core的最新版本修复了我网站上的一个bug。问题是Wordpress有一个早期版本。如何覆盖默认的jquery ui核心?我找到的一个解决方案是编辑脚本加载程序。wordpress中的php文件包括文件夹,但我不想接触wordpress核心,除非我必须这样做。下面是我希望避免的核心变化。$scripts->add( \'jquery-ui-core\', \'/wp-content/themes/themefolder/jquery.ui.core.min.js\', arra