javascript - 将事件绑定(bind)到父级时如何检测输入类型

标签 javascript jquery jquery-events

我正在尝试将事件绑定(bind)到父级而不是每个子级。 我可以成功测试 SELECT、TEXTAREA 和 A。如何测试输入 [type='text']?

$('form').bind('focusin', function(e) {
    var target = e.target, // e.target grabs the node that triggered the event.
        $target = $(target);  // wraps the node in a jQuery object
    if (target.nodeName === 'SELECT' | target.nodeName === 'TEXTAREA' | target.nodeName === 'A') {
        alert('hi');
        // do stuff
    }
});

最佳答案

注意:从 jQuery 1.7 开始,使用 on()而不是 delegate()


使用 delegate()听起来最简单也最适合我。

$('form').delegate('textarea, select, a, input[type="text"]', 'focusin', function () {
  alert('hu');
  //do stuff
});

实际上,它正是按照您的要求进行的。事件本身附加到 form 并检查 target 是否与给定的选择器匹配。

Live Demo

无需重新发明轮子。

关于javascript - 将事件绑定(bind)到父级时如何检测输入类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5672029/

相关文章:

javascript - Jquery - 调整选项卡式内容的边框半径

javascript - 在页面加载之前执行 Javascript

javascript - 监听Bootstrap DatetimePicker中的点击事件

javascript - 当所有文本框在 jQuery 中都有值时如何启用按钮?

javascript - 如何获取 Nativescript 中复选框的值?

javascript - 根据确认对话框中的确定、取消和关闭按钮执行不同的代码?

javascript - 如果没有结果如何清除

javascript - Ember : In my template I can't get a value from a form my controller

jquery - 标题部分视差滚动效果 jQuery 和垂直中心边距

javascript - jQuery 验证插件 - 焦点事件与键/鼠标事件不一致