能否在不触发失焦事件的情况下模糊输入框?

3
我遇到了错误,因为jQuery中的事件绑定器附加在'keyup'和'blur'上。但是当我从DOM中删除似乎触发模糊事件的输入时,会重新在不存在的DOM输入上运行处理程序。

1
你能否在 jsFiddle 或类似的平台上提供一个示例? - elclanrs
它不应该在一个不存在的元素上运行事件处理程序,而是在一个存在的元素上运行,但它不在文档中。 - icktoofay
@southshift:你是如何从DOM中移除元素的? - Nope
简单的 $('input').remove(); - nkcmr
@southshift:感谢您回复,我之所以问是因为已删除的元素不应触发任何事件,正如icktoofay上面指出的那样,它们会随着元素一起被删除。我想您可能使用了detach(),因为它会保留事件和数据。 - Nope
2个回答

1

如果事件监听器是使用jQuery添加的,您可以使用unbind

$(/* ... */).unbind('blur');

在较新的jQuery版本中,off 是首选:
$(/* ... */).off('blur');

除非绑定很明显且在操作者的控制范围内,否则我不建议仅解除事件绑定。如果事件是使用命名空间附加的,例如 $(...).on("blur.namespace", ....),那么仅解除 blur 将意外地解除其他人的事件绑定。 - Nope
@FrançoisWahl:非常正确。确实需要考虑到这一点。 - icktoofay

0

当事件被触发时,您可以在处理程序中验证this

if (this && $(this).length > 0 ) { /*做一些事情*/ }


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接