【问题标题】:my .js file doesn't work in a .php file different from my plugin file我的 .js 文件在与我的插件文件不同的 .php 文件中不起作用
【发布时间】:2013-09-03 09:27:52
【问题描述】:

我正在开发一个 Wordpress 插件,我必须使用 jquery。 在我的插件文件(称为“my_p.php”)中,我以这种方式注册我的 .js 文件(my_js.js):

add_action('admin_enqueue_scripts', 'my_script');
function my_script() {
    wp_register_script( 'my_jquery', plugins_url( '/js/my_js.js', __FILE__ ), array( 'jquery' ), '1.0.0', false );
    wp_enqueue_script( 'my_jquery' );
}

my_js.js 中的代码是:

 jQuery(document).ready(function($){
         jQuery(document.body).on('click','#button_my_p', function(e){
          alert('hello!');
    });
});

我的问题如下: 如果 'button_my_p' 是 *my_p.php* 文件中的一个元素(在我的情况下是一个按钮),它工作正常,当我单击按钮时我会看到警报。但是,如果 'button_my_p' 是另一个 .php 文件的元素(例如,我的插件文件夹中的 'other.php'),则 jquery 代码不起作用..我看不到警报..

我错过了什么???

我的插件结构是:

  • js 文件夹,我将 my_js.js 放在其中。
  • my_p.php 文件
  • other.php 文件

感谢您的帮助!

【问题讨论】:

  • 您是否在 firebug|console web|etc 中遇到了一些错误?
  • 是的...我收到此错误:Unchaught ReferenceError: jQuery is not defined
  • 现在我不再有那个错误(我添加了一个 'echo "";other.php 文件)...我没有收到错误...但它还没有工作..
  • 您不应该在WordPress环境中硬编码脚本资源,您使用注册和入队wp_register_script();wp_enqueue_script();的方式是正确的。

标签: php jquery wordpress plugins


【解决方案1】:

jQuery 不在乎你有一个文件还是一千个文件。它只是在 DOM(可能由一个 .php 文件或一千个包含的文件创建)中搜索匹配的元素。

我对调试此问题的建议是: 首先,检查my_js.js 是否存在于other.php 生成的页面上 - 如果不是 - 那么你使用wp_enqueue_script 不正确

【讨论】:

  • 我已经检查过了!但 my_js.js 不存在于由 other.php.. 生成的页面上
  • 那么您需要确保所有插件的页面都获得样式和脚本 :) 还可以考虑阅读codex.wordpress.org/Writing_a_Plugin - 这是开始阅读有关编写自己的插件的好地方...这个页面还包含一个@进一步阅读@部分也值得一读
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多