2010-12-12 55 views
2

我使用jQuery live()函数来更改表单文本输入的边框颜色,以便为用户更好地指示它们当前正在键入的元素。对我来说更容易使用live()而不是bind(),因为有些情况下新的表单输入会动态插入到页面中。jQuery live()不会在Firefox中显示文本光标

通过阅读通过jQuery documentation for live()我明白,每个处理程序必须返回false以防止其他处理程序执行。无论我是否误解这实际上意味着什么,这里是我必须添加和删除我的表单输入边框颜色的代码。

$('input.highlight').live({ 
    focus: function() { 
     $(this).parent('span').addClass('input-focus'); 
     return false; 
    }, 
    blur: function() { 
     $(this).parent('span').removeClass('input-focus'); 
     return false; 
    } 
}); 

这完全适用于Chrome和Safari除了在Firefox中闪烁的文本光标不会出现在表格里面输入时,它已经集中。如果我删除return false;它显示。这可能是我遇到过的一个jQuery错误吗?

+0

它的方式.Live气泡和返回false阻止某些事件从代理上链起来更高 – Raynos 2010-12-12 14:24:49

+0

那么Chrome和Safari在设置边框颜色类并返回false之后或在回报,Firefox不是? – greenie 2010-12-12 15:00:56

回答

1

嘿,我有同样的问题。我通过添加$(this).focus();来克服问题。之前返回false。

$('input.highlight').live({ 
    focus: function() { 
     $(this).parent('span').addClass('input-focus'); 
     $(this).focus(); 
     return false; 
    }, 
    blur: function() { 
     $(this).parent('span').removeClass('input-focus'); 
     return false; 
    } 
}); 

希望这会有所帮助。

相关问题