wordpress 无法使用jQuery执行文本插入到div中

vatpfxk5  于 2023-04-20  发布在  WordPress
关注(0)|答案(1)|浏览(168)

我有一个带有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...');

但它没有附加...
任何方向将不胜感激...提前感谢所有!!!干杯!

xzlaal3s

xzlaal3s1#

嗯,在你的代码中,你先用show("blind")显示元素,然后你马上调用toggle("blind"),这会隐藏元素。也许这发生得太快了,你看不到正在显示的元素。
为了解决这个问题,你可以尝试使用fadeOut()函数而不是toggle()来隐藏延迟后的元素。下面是修改后的showMyNotice()函数:

function showMyNotice(msg, alert) {
 console.log('executing showMyNotice....');
 $(window).scrollTop(0);
 $('#my_notice').text(msg).show("blind").delay(5000).fadeOut( "slow" );   
};

相关问题