我创建了一个小部件插件,其中列出了大约10个字段集。jQuery在开头运行,并隐藏没有值的和字段集。还有允许“添加”和“删除”字段集的按钮。
一切都很好,除了该“保存”的时候。单击“保存所有jQuery”停止工作后,所有隐藏的字段集都会显示出来,“添加”和“删除”按钮不再工作。继续正确使用小部件的唯一方法是刷新页面
有人知道这可能是什么原因,或者可能的解决方案吗?
我创建了一个小部件插件,其中列出了大约10个字段集。jQuery在开头运行,并隐藏没有值的和字段集。还有允许“添加”和“删除”字段集的按钮。
一切都很好,除了该“保存”的时候。单击“保存所有jQuery”停止工作后,所有隐藏的字段集都会显示出来,“添加”和“删除”按钮不再工作。继续正确使用小部件的唯一方法是刷新页面
有人知道这可能是什么原因,或者可能的解决方案吗?
您正在寻找jQuery。live()或jQuery的livequery插件,具体取决于您要执行的操作。(如果需要使用onChange事件,则第二个是合适的。)
目前情况下,在调用save按钮时不会调用jQuery挂钩,因为表单的标记是使用ajax和jQuery(文档)重新加载的。显然,ready()并没有像现在这样被调用。
您只需要在jQuery中重新绑定控件。ajax回调函数的“成功”。
绑定触发器。live()可能是另一种选择-我个人更喜欢。on()函数。
只需使用DOM检查器检查DOM事件绑定。
这是一个Ajax的东西。保存小部件时,有一种解决方案可以使脚本再次工作:
jQuery(document).ajaxSuccess(function(event, xhr, settings) {
var widget_id_base = \'your-widget-id-base\';
if(settings.data.search(\'action=save-widget\') != -1 && settings.data.search(\'id_base=\' + widget_id_base) != -1) {
// Do your stuff again here
}
});
您可以在上调用函数\'widget-added widget-updated\'
.示例-
$( document ).on( \'widget-added widget-updated\', onSaveWidget );
function onSaveWidget( event, widget ) {
initColorPicker( widget );
}
因此,您的自定义JS函数也将在您的小部件保存后工作。我最近在我的主题中添加了以下内容functions.php, 要从CDN加载jQuery,请执行以下操作:function my_init_method() { wp_deregister_script(\'jquery\'); wp_register_script(\'jquery\', \'http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js\'); } add_acti