1

我目前正在处理一个触发 ajax 调用的点击事件。我想利用一个小插件来处理一些表单数据验证。问题是 ajax 调用和插件的验证功能都将在同一个点击事件上触发。

最后,我希望插件覆盖 ajax 函数。我真的不知道该怎么做。有什么建议么?我无法发布整个插件,但这里有一个快速示例。

Ajax 调用在这里触发:

$('p.thisClass').live('click',function() {
    //Ajax Fires here
});

插件片段在这里:

config.button.live('click', function() {
    someFunction();
    // Stop Other click event from firing
});

有几种方法可以查看此问题,但最后,我希望插件优先于触发 ajax 的单击。关于如何做到这一点的任何想法?

谢谢

4

3 回答 3

0

Have you considered disabling the button after the first click?

Sounds to me like solving the multiple submission problem.

于 2012-05-21T18:42:05.180 回答
0

你有绑定功能的控制权吗?如果是这样,请参考 jQuery 的 unbind 或 die 方法: Unbind Die

使用这样,您可以将原始的 ajax 点击事件分配给一个变量,然后解除绑定/终止那个变量:

示例:要仅取消绑定一个先前绑定的处理程序,请将函数作为第二个参数传入:

     var foo = function () {
     // code to handle some kind of event
     };

     $("p").bind("click", foo); // ... now foo will be called when paragraphs
 are clicked ...

     $("p").unbind("click", foo); // ... foo will no longer be called.
于 2010-02-10T22:56:01.947 回答
0

要取消一个事件我 jquery 你只是

return false;

您只需要检查首先附加哪个事件处理程序。

然而,更好的解决方案是验证更改,而不是提交。这样做可以让用户更快地纠正他们的错误,也不会那么烦人。

于 2010-02-10T19:24:24.553 回答