我正在尝试使用.toggleClass处理一个表单,我有多个文本/输入,但它不按照我想要的方式工作。我希望页面上的所有输入[type =“text”]字段都具有此功能。有些字段是静态的,有些字段是使用.append和.live添加的,这些字段无法正常工作。基本上我想要一个适用于所有静态或动态字段的函数。
$(document).ready(function(e) {
$(this).live('focusin, blur', function() {
$(':input[type="text"]').bind('focusin blur', function() {
$(this).toggleClass('fieldFocus');
})
});
});
$(':input[type="text"]').bind('focusin blur', function() {
$(this).toggleClass('fieldFocus');
});
我确定这是一个基本问题,但对于我的生活,我无法理解。
任何帮助都会很棒!谢谢!
$(document).ready(function(e) {
$(':input[type="text"]').live('focusin blur', function() {
$(this).toggleClass('fieldFocus');
});
});
});
答案 0 :(得分:3)
答案 1 :(得分:2)
$(':input[type="text"]').live('focusin blur', function() {
$(this).toggleClass('fieldFocus');
});
修改强>
只是为了注意 - jQuery 1.7引入了新的事件接口,上面的例子看起来像这样:
$(document).on('focusin focusout', ':text', function(){
$(this).toogleClass('fieldFocus');
});
它还使用 scumah 指出的快捷:text
和 Bryan Ross 指出的focusout
,并且由于事实, blur
在IE中没有冒泡(jQuery使用focusout
来解决这个问题。)
注意,代替document
你应该使用另一个元素 - 最好的是你正在填充AJAX的容器。
答案 2 :(得分:2)
此代码应该有效,请查看此问题:http://jsfiddle.net/W83Du/
$(':text').live('focusin blur', function() {
$(this).toggleClass('fieldFocus');
});
答案 3 :(得分:1)
通常,focusin
事件与focusout
配对,focus
与blur
配对。此外,在调用live时,请使用空格而不是逗号分隔要附加的事件,如下所示:
$(this).live('focusin focusout')
而不是
$(this).live('focusin, focusout')