正如我在标题中所提到的,我希望防止在我发射另一个事件时触发事件:
我们来看这个例子:
$(function() {
$("#security_code").bind('change', function () {
// Do validation and show errors
});
$("#reloadCaptcha").bind('click', function () {
// generate new captcha and clear 'secuirity code' field
// clear the field so the user will enter the new generated security code
document.getElementById('security_code').value = '';
});
});
目的:防止在点击'#reloadCaptcha'时触发'change'事件。
当我点击链接(第二个事件)时,第一个事件也会触发(因为'更改'激活)。我希望在实际点击链接时停止所有“更改”事件。我希望我很清楚。有没有人有任何想法?
是的,我尝试过unQuery,stopPropagation和jQuery文档中的其他函数,但它只是没有用。
请注意,我只想在点击该特定链接时冻结“更改”。在其他情况下,它应该一直有效。
先谢谢你们!我希望有人可以为我澄清这一点。
答案 0 :(得分:1)
$(function() {
$("#security_code").bind('change', function () {
// If #security_code is empty do nothing
if ($('#security_code').val() == '')
{
return;
}
// Otherwise validate...
});
$("#reloadCaptcha").bind('click', function () {
// generate new captcha and clear 'secuirity code' field
// clear the field so the user will enter the new generated security code
$('#security_code').val('');
});
});
答案 1 :(得分:0)
除非点击$("#link_id")
时触发的代码正在更改元素$("#username")
,否则更改事件不应触发......但无论哪种方式event.preventDefault()都可以执行您想要的操作。
答案 2 :(得分:0)
来自jQuery文档:
停止进一步的处理程序 在使用一个绑定后执行 .live(),处理程序必须返回 假。调用.stopPropagation()会 没有做到这一点。
您是否尝试使用.live()而不是.bind()并返回false?
答案 3 :(得分:0)
如果没有看到整个代码,很难回答,但以下代码可能会有所帮助。我知道这不是一个完美的解决方案,但可能有所帮助;
$("#username").bind('change', function () {
if ( $('body').data('linkClicked') !== 1 )
{
// Validate field when element loses focus
}
});
$("#link_id").bind('click', function () {
$('body').data('linkClicked', 1);
// Do something when the a specific link is clicked
});
答案 4 :(得分:0)
这是我的代码的新版本:
$(function() {
$("#security_code").bind('change', function () {
// Do validation and show errors
});
$("#reloadCaptcha").bind('click', function () {
// generate new captcha and clear 'secuirity code' field
// clear the field so the user will enter the new generated security code
document.getElementById('security_code').value = '';
});
});
目的:防止在点击'#reloadCaptcha'时触发'change'事件。
答案 5 :(得分:0)
$(function() {
$("#security_code").bind('change',function() {
if ($(this).val() == 'something') {
$(this).bind('change');
//do something else...
}
});
$("#reloadCaptcha").bind('click',function() {
$("#security_code").val('').unbind('change');
});
});
PS: 来自timothyclifford的那个也很好。