我有一个带有DIV块的PHP页面:
<div id="my_notice" class="my_notice ui-corner-all"></div>
这个页面my-main.php是一个类模板表单,是在加载js文件后从另一个初始PHP加载的,如下所示:
wp_register_script('my_notice_js', ......'notification/my-notice.js');
wp_enqueue_script('my_notice_js');
include_once( plugin_dir_path(__FILE__) . 'my-main.php');
new my_main_form;
在这个php中,当我需要执行验证操作时,我会:
function do_operation() {
if ( $this->state === FALSE ) {
if ( !isset($this->error_message) )
$this->error_message = utf8_encode("Operation not completed!");
?><script type="text/javascript">showMyNotice('<?php echo $this->error_message; ?>', true);</script><?php
}
.
.
.
}
在.js文件中,我有:
function showMyNotice(msg, alert) {
console.log('executing showMyNotice....');
$(window).scrollTop(0);
$('#my_notice').text(msg).show("blind").delay(5000).toggle( "blind" );
};
当我点击提交的表单按钮showMyNotice被执行时,实际上我在控制台中看到字符串“执行showMyNotice”,并且窗口也在顶部,如expected所示,但似乎show-delay-toggle不能执行...事实上,如果我直接从控制台执行show-delay-toggle的指令,那么它就可以工作,我可以看到div出现....我甚至将通知div设置为可见,然后从.js调用只是为了在div中附加消息,但它没有,直接从控制台它会...
我甚至试着保持可见的DIV,只是附加文本:
$('#my_notice').empty().append('showing some text...');
但它没有附加...
任何方向将不胜感激...提前感谢所有!!!干杯!
1条答案
按热度按时间xzlaal3s1#
嗯,在你的代码中,你先用
show("blind")
显示元素,然后你马上调用toggle("blind")
,这会隐藏元素。也许这发生得太快了,你看不到正在显示的元素。为了解决这个问题,你可以尝试使用
fadeOut()
函数而不是toggle()
来隐藏延迟后的元素。下面是修改后的showMyNotice()
函数: