我正在尝试将事件绑定到父级而不是每个子级。 我可以成功测试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
}
});
答案 0 :(得分:2)
我可能会建议您将代码更改为:
$('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')
答案 1 :(得分:2)
注意:从jQuery 1.7开始,使用on()
代替delegate()
使用delegate()
听起来最简单,最适合我。
$('form').delegate('textarea, select, a, input[type="text"]', 'focusin', function () {
alert('hu');
//do stuff
});
实际上它只是你所要求的。事件本身附加到form
并检查target
是否与给定的选择器匹配。
无需重新发明轮子。
答案 2 :(得分:0)
if ($target.attr('type')=='text') {