Javascript 如何在将事件绑定到父级时检测输入类型

Javascript 如何在将事件绑定到父级时检测输入类型,javascript,jquery,javascript-events,Javascript,Jquery,Javascript Events,我试图将事件绑定到父级而不是每个子级。 我可以成功测试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 objec

我试图将事件绑定到父级而不是每个子级。 我可以成功测试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
    }
});

我建议您将代码更改为以下内容:

$('form').bind('focusin', function(e) {
    var $target = $(this); // wraps the node in a jQuery object
    if ($target.is('select') || $target.is('textarea') || $target.is('a') || $target.is('input[type="text"]') {
        alert('hi');
        // do stuff
    }
});
或者,您可以使用
:input
选择器选择所有表单元素:

$target.is(':input')

我建议您将代码更改为以下内容:

$('form').bind('focusin', function(e) {
    var $target = $(this); // wraps the node in a jQuery object
    if ($target.is('select') || $target.is('textarea') || $target.is('a') || $target.is('input[type="text"]') {
        alert('hi');
        // do stuff
    }
});
或者,您可以使用
:input
选择器选择所有表单元素:

$target.is(':input')

注意:在jQuery 1.7中,使用而不是
delegate()


使用声音对我来说是最简单和最合适的

$('form').delegate('textarea, select, a, input[type="text"]', 'focusin', function () {
  alert('hu');
  //do stuff
});
实际上它正是你所要求的。事件本身附加到
表单
,并检查
目标
是否与给定的选择器匹配


无需重新发明轮子。

注意:在jQuery 1.7中,使用而不是
delegate()


使用声音对我来说是最简单和最合适的

$('form').delegate('textarea, select, a, input[type="text"]', 'focusin', function () {
  alert('hu');
  //do stuff
});
实际上它正是你所要求的。事件本身附加到
表单
,并检查
目标
是否与给定的选择器匹配


无需重新发明轮子。

target
是DOM节点,
$target
是jQuery元素。您需要执行
$target.attr
target
是DOM节点,
$target
是jQuery元素。您需要执行
$target.attr