2009-07-12 140 views
0

這是另一個問題。我正在使用JQuery-1爲我的一個頁面添加一個簡單的交互性。簡而言之,該頁面的右上角包含一個搜索文本框,在document.ready上,我只是簡單地調用一個inputHint()函數,將短語「搜索產品」添加到我的文本框中。當用戶點擊這個文本框時,我調用另一個函數(在這種情況下爲hideHint())來隱藏默認的「搜索產品」短語。最後,如果用戶離開文本而不打字並點擊頁面上的其他任何位置,我會再次提示提示。下面是一塊的JavaScript userd的:
jquery瀏覽器兼容性問題,我做錯了什麼?

$.fn.inputHint = function(options) { 
    options = $.extend({hintClass: 'hint'}, options || {}); 

    function showHint() {   
     if ($(this).val() == '') { 
     $(this).addClass(options.hintClass).val($(this).attr('accesskey'));    
     } 
     else{} 
    } 

    function removeHint() {  
     if ($(this).hasClass(options.hintClass)) $(this).removeClass(options.hintClass).val('');    
    } 

和這裏的的document.ready處理程序(或者你可以稱它爲):

$(document).ready(function(){ 

/* Initialize hint*/      
    $(function() { 
    $('*[@accesskey]').inputHint(); 
    });});  

這段代碼獲得所期望的功能般的魅力上班但只能在Google Chrome和Safari上使用。 IE和Firefox都有非常強烈的行爲(該提示工作正常,但如果我重新加載頁面,它會奇蹟般地停止!)。我的代碼是否負責這種行爲或是JQuery本身的問題(我經常聽說JQuery與所有主流瀏覽器兼容)?想法!?
PS:這是jQuery的1

+0

什麼是 「JQuery的-1」? 它與「jQuery 1.3.2」有什麼不同嗎? (官方jQuery庫的當前版本) – 2009-07-12 12:21:44

回答

2

這可能是一個有點長鏡頭,有沒有必要換在$函數(調用inputHint()),因爲它已經在你準備功能。試試這個:

$(document).ready(function(){ 
    /* Initialize hint*/ 
    $('*[@accesskey]').inputHint();  
}); 
2

我不知道爲什麼你使用accesskey屬性來存儲你的暗示,但是反正...

$.fn.inputHint = function(options) { 
    options = $.extend({ hintClass: 'hint' }, options || {}); 

    $this = $(this); 
    hintValue = $this.attr("accesskey"); 

    function showHint() { 
     if ($this.val() == "") { 
      $this.addClass(options.hintClass).val(hintValue); 
     } 
    } 

    function removeHint() { 
     if ($this.hasClass(options.hintClass)) { 
      $this.removeClass(options.hintClass).val(""); 
     } 
    } 

    $this.blur(showHint) 
     .focus(removeHint) 
     .addClass(options.hintClass) 
     .val(hintValue); 
};