2010-12-12 30 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; 
    } 
}); 

希望這會有所幫助。