自定义 jQuery 不适用于 Wordpress Ninja Forms 插件

Posted

技术标签:

【中文标题】自定义 jQuery 不适用于 Wordpress Ninja Forms 插件【英文标题】:Custom jQuery not working on Wordpress Ninja Forms plugin 【发布时间】:2017-04-14 00:39:21 【问题描述】:

当我想添加影响表单的自定义 jQuery 代码时遇到了一些问题。

例如,当有人单击输入或单选按钮时,另一个输入或元素将被隐藏或显示。我试图在单击或其他内容时获得类似 console.log('trigger'); 的结果,但在开发中没有。控制台出现了。另外,我尝试了以下方法:

使用.on('click', function()... 调用click 事件或使用.trigger('click'); 调用事件,或将事件更改为change

将脚本嵌入到来自忍者表单的文件中,或者将其放在页面内footer.phpbody 标记的结尾处

要更改 jQuery 的开始声明以在这样的函数中工作:(function($) $(document).ready(function().....

我知道我可以尝试另一个插件,我尝试了一个并且自定义 jQuery 工作,但我真的很喜欢这个,不知道为什么会这样......

谢谢

【问题讨论】:

你有没有设法让它工作? 是的,我当时确实设法以某种方式解决了这个问题,感谢您的回复!我也看到这个答案帮助了更多的人,继续努力! 【参考方案1】:

不确定您是否需要这方面的帮助,因为您发布问题已经有一段时间了,但这可能会对将来的其他人有所帮助。我遇到了相同/类似的问题,无法在 Ninja Forms 上运行 JS/jQuery,发现这是因为 Ninja Forms 异步加载表单。因此,当您的 document.ready 函数运行时,表单还不存在并且无法绑定。

Ninja Forms 有自己的事件就绪状态,可以按如下方式使用:

jQuery(document).on( 'nfFormReady', function( e, layoutView ) 
    // Your code goes here...
);

【讨论】:

谢谢。我花了太长时间试图找到那个......这是在某个地方的 NF 文档中吗? 抱歉,我不确定它是否在文档中,因为他们的网站目前似乎已关闭。但是,我想我实际上在 GitHub 页面上找到了对它的引用:github.com/wpninjas/ninja-forms/issues/2436,然后在 Google 上搜索了使用中的nfformReady 的示例。 @JoelWorsham - NinjaForms 网站现在似乎重新启动并运行。但是,我搜索并搜索了他们的文档和 codex,但那里似乎没有任何对 nfFormReady 事件的引用......所以我一定是从上面的 Github 页面上的示例中得到的。 添加到此以允许在 IF 语句中使用 $ 的最佳解决方案是什么? @Lee - 你指的是什么 IF 语句?你不能只使用jQuery 而不是$ 吗? - 如果你真的需要使用$,那么请查看:***.com/questions/6635600/…【参考方案2】:

事件未注册仅仅是因为您尝试绑定该事件的元素当时还不存在(在文档加载时)。 Ninja 表单异步加载表单内容,因此您必须等到表单完全加载后再添加事件侦听器。 这对我有用:

var formExists = setInterval(function() 
  if ($(".nf-form-cont").length) 
    // Set your event listeners here, example:
    $("#nf-field-1").click(function(e) 
      console.log("click!");
    
    clearInterval(formExists);
  
, 100); // check every 100ms

【讨论】:

我不知道为什么这被否决了。诚然,这不是官方支持的“就绪”事件,但是我使用过的其他库不提供“就绪”或“加载”事件,我已经完成了这种方法。即使更好的答案是使用 NF 内置的答案,它仍然是一个有效的答案。

以上是关于自定义 jQuery 不适用于 Wordpress Ninja Forms 插件的主要内容,如果未能解决你的问题,请参考以下文章

WordPress REST API 不适用于自定义 wordpress 路径

在 PhP、Wordpress 和 MySQL 中,查找最近的位置的功能不适用于自定义表

wordpress自定义add_rewrite_rule不适用于分页

永久链接不适用于自定义帖子和类别

jQuery 属性等于选择器不适用于自定义属性

为啥 jQuery .html() 方法不适用于 IE8 中的自定义标签?