2009-11-29 104 views
1

不是一個JS男人 - 所以任何人都可以解釋爲什麼這不起作用?我想從簡單的AJAX腳本中調用一個腳本中的預定義函數 - 我只是希望它通過AJAX將div內容帶入頁面時調用qtip功能。調用jquery函數和傳遞變量

感謝, ^ h

腳本1 - AJAX裝載機

 if(myHttpRequest.readyState==4) 
      data.innerHTML = myHttpRequest.responseText; 
       qtip_me('.div_to_act_on'); 
    } 

腳本2 - 主jQuery腳本

$(document).ready(function() { 

    function qtip_me(a) { 
     $(a).each(function() { 
      $(this).qtip({ 
       content: {'showme'}, 
       position: {corner: {tooltip: 'bottomLeft', target: 'topRight'}}, 
       style: { 
         width: 300, 
         padding: 5, 
         background: '#A2D959', 
         color: 'black', 
         textAlign: 'center', 
         border: { 
         width: 7, 
         radius: 5, 
         color: '#A2D959' 
         }, 
         tip: 'bottomLeft', 
         name: 'dark' // Inherit the rest of the attributes from the preset dark style 
       }   
      }); 
     }); 
    }; 
}); 
+0

擺脫$(document).ready(function(){'和相應的結束'});''。你只是定義一個函數,你不需要它。 – 2009-11-29 13:47:11

+0

儘管存在爭論,乾杯傢伙 - 「範圍」絕對是它) – MrFidge 2009-12-01 11:17:09

回答

2

可能是這樣定義的函數不在範圍內。 嘗試定義,像這樣的功能:

qtip_me = function(a) {} 

這樣,這將是在範圍內。

或者如其他答案所述,請勿在文檔中定義準備好的功能。

+0

@tharkun:「jQuery範圍」令人討厭。哪有這回事。另外,你的語法錯了。但基本上你的想法*是正確的,所以我刪除了我的DV。 – 2009-11-29 13:56:17

+0

@tharkun:你再次用「jQuery範圍」廢話。 -1 – 2009-11-29 13:57:45

+1

爲什麼如此激進@cf?你的語言? – markus 2009-11-29 14:01:15

1

你不需要巢您qtip_me()的內部函數$(document).ready塊。這是一個通用的函數調用,而不是依賴完全加載的文檔。這是因爲假設您之前的AJAX請求是在文檔加載後發生的(可能是錯誤的假設)。

2

它是在詞法範圍內聲明qtip_me函數,函數不能從外部訪問它的封閉函數。