2010-04-26 62 views
6

为什么会出现这种失败...jQuery的:如何找到元素* *没有某一类

$('div.contactAperson input').not('input.hadFocus').focus(function() { 
    $(this).attr('value', ''); 
}); 

...它的意思嗅出输入的有没有得到了类.hadFocus然后当其中一个子集接收到焦点时,它应该将值变为null。

现在,输入值总是变为zapped - 测试.not('input.hadFocus')无法停止执行。

顺便说一句,上面的代码前面的是下面的代码,这是工作的罚款:

$('div.contactAperson input').focus(function() { 
    $(this).addClass('hadFocus'); 
}); 

感谢任何聪明 - 欢呼声,-Alan

+0

重复的:我怎么能不选择在jQuery的一个给定类的所有元素?(http://stackoverflow.com/questions/2448051) – hippietrail 2012-12-02 02:46:04

回答

4
$('div.contactAperson > :input').not(':input.hadFocus').focus(function() { 
    $(this).attr('value', ''); 
}); 

好运

+0

韩国社交协会,说不上为什么但这个版本从不清除价值。但是,对于代码建议,我会继续抓它... – Alan 2010-04-26 19:14:30

5

你需要处理程序根据元素的当前状态运行 - 不是绑定时的状态。您可能需要使用live绑定。

尝试是这样的:

$('div.contactAperson input:not(.hadFocus)').live('focus', function() { 
    $(this).attr('value', ''); 
}); 
+0

谢谢,听起来就像那样。现在只需要找到相关的项目。干杯,阿兰 – Alan 2010-05-31 12:03:48