【问题标题】:Jquery .ajax beforeSend seems to remove the click event handler from a button?Jquery .ajax beforeSend 似乎从按钮中删除了单击事件处理程序?
【发布时间】:2012-12-28 03:40:18
【问题描述】:

我正在尝试使用 wordpress 来阻止 Jquery 发送的 ajax 请求,并使用一些额外的数据重新提交它。

这是它的工作原理:

  • 用户点击提交按钮。

  • Wordpress 提交 ajax 请求

  • 我以这种方式使用.ajaxSetup 设置了一个全局beforeSend 函数:

    $.ajaxSetup( {beforeSend: monitorRequests } );

  • wordpress在提交请求时,被我的函数拦截,调用另一个函数提交另一个ajax请求,而monitorRequests'返回false,取消原来的ajax请求。

  • 发送我自己的ajax请求,没有任何问题。

但是问题就在这里。这样做一次后,如果用户再次单击提交按钮,则不会调用 wordpress 的单击处理程序。我想知道这是为什么,这是否与取消 ajax 请求有关?还是别的什么?我应该怎么做才能继续调用点击处理程序?

【问题讨论】:

  • 您要删除/更改按钮吗?如果是这样,那可能会删除点击事件。但是我真的不能说,因为没有提供代码。
  • @kennypu 我没有对按钮做任何事情,除了添加/删除一个 css 类。
  • 啊..似乎 wordpress 在请求期间禁用了它。

标签: javascript jquery event-handling


【解决方案1】:

弄清楚了,Wordpress 在 ajax 请求期间禁用了该按钮,并且由于从未调用过 wordpress 的回调,因此它保持禁用状态。

【讨论】:

    【解决方案2】:

    $.ajaxSetup 会全局影响页面中的 ajax 调用。您不知道 WP 插件中实现了多少 AJAX,以及每个插件的自定义实现方式。

    尝试将范围缩小到特定元素。你可以使用

    $('.submit').bind('click', function(){ /* your fn */ }); 
    //You can have many 'click' binding eg..
    $('.submit').bind('click', function(){ /* another */ }); 
    $('.submit').bind('click', function(){ /* yet another */ }); 
    

    在现有脚本之前插入您的脚本。您的函数将首先被调用。

    【讨论】:

      猜你喜欢
      • 2011-10-13
      • 1970-01-01
      • 1970-01-01
      • 2017-07-15
      • 2018-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多