2010-02-10 80 views
1

我目前正在使用点击事件,触发ajax调用。我想利用一个小插件,它将处理一些表单数据验证。问题在于,插件的ajax调用和验证函数将在同一个单击事件中触发。jQuery - 重叠点击事件...如何防止一个

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

Ajax调用燃煤这里:

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

插件片段在这里:

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

有几种方式来看待这一点,但在最后,我希望插件在优先点击激发ajax。任何想法如何做到这一点?

感谢

+0

通过覆盖和优先,你的意思是你想先运行插件,然后运行ajax,或者你只需​​要插件,而其他的点击根本不会启动? – neatlysliced 2010-02-10 19:18:49

+0

插件本身在页面加载时被调用。它是偶然的 - 并且必须是偶然的 - 在点击事件上。基本上,如果你点击目标元素,我希望插件的点击事件触发,并有能力阻止同一元素上的其他点击事件触发。 – SDG 2010-02-10 19:33:06

回答

0

取消事件的jQuery我你刚才

return false; 

你一定要检查一下,首先连接该事件处理程序。

然而,更好的解决方案是验证更改,而不是提交。这样做可以让用户更快更省心地纠正错误。

+0

向插件添加返回false将停止插件的单击事件。在ajax函数中返回false将停止发射。没有完成我想要的。我希望插件触发并覆盖该元素上的任何其他点击事件。这是两个完全独立的功能。 这不是一个真正的表单验证插件,更改验证变化是不合适的。 – SDG 2010-02-10 19:44:37

0

你有控制绑定功能吗?如果是这样,参考jQuery的解除绑定或死法: 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. 
0

你有没有考虑第一次点击后禁用按钮?

听起来像解决多次提交问题。