2009-11-19 83 views
3

$ .query的jquery的ajax方法可以用來從遠程位置加載和執行javascript ... 它也可以用來加載JavaScript,並在稍後執行某些事件發生在基於某些用戶操作使用ajax加載的元素上...?

感謝和問候....

回答

2

是有腳本綁定到尚未加載或降低呼叫的數量到遠程腳本元素的目標是什麼?

如果它是第一個,你並不需要保存腳本供以後執行,你只需要簡單地把$.getScript()到另一個功能,並綁定要該功能的事件:

function executeScript() { 
    $.getScript("somescript.js", 
      blah blah blah 
     ); 
} 

$(".post_loaded_elements").hover(executeScript); 

但是,如果腳本位於某個遠程服務器上,並且每次用戶將鼠標懸停在某個元素上時都不想進行遠程調用,則可能需要使用某種序列化方法,您可以在其中請求腳本的內容使用另一種Ajax方法,並將其反序列化並運行。這將使用與上述相同的設置,只需額外檢索腳本並將其序列化爲一個變量,該變量在函數中被反序列化即可。我會做一個快速檢查,看看序列化是相當簡單的jQuery中。

+0

嗨安東尼... 你已經擊中了公牛的眼睛...我的目標是第一個...... :-) 我想要做的是加載不同的窗體和基於什麼是用戶點擊菜單.. 表單元素使用ajax加載,自然我們必須使用活或綁定將它們添加到dom樹... 但我不能用戶生活bcoz我想活動在文本框聚焦或模糊時觸發,並且這些操作當前不被現場支持... – SpikETidE 2009-11-19 06:36:35

8

$.getScript將加載並執行Javascript。如果您只想加載Javascript,則必須將JavaScript放入函數中,然後在發生未來事件時執行該函數。

假設你撥打:

$.getScript('http://example.com/hello.js'); 

,它包含以下內容:

function Hello() { 
    alert('hello'); 
} 

的JavaScript將被執行,但由於該警報是在功能上它不會跑了。直到您調用功能Hello()纔會運行。因此,對於第二部分,假設您想要連接它,以便在單擊鏈接時運行Hello()函數。您可以提供一個回調,以便在加載Javascript後運行。所以,你可以這樣做:腳本加載

$.getScript('http://example.com/hello.js', function() { Hello(); }); 

後,將設置你的鏈接點擊事件處理程序將調用Hello功能。

0

是的,這是可能的。我製作了以下腳本,它由三個文件組成:接口,當用戶單擊按鈕2時從外部文件加載的HTML文本框,以及用戶單擊第一個按鈕時加載的外部腳本,並警告文本框的值,該值在腳本之前加載,但在加載文檔之後加載。

單擊按鈕2,在文本框中鍵入內容,然後單擊按鈕1,這裏是代碼。

html頁面(接口)

<button id="b1">button 1</button> 
<button id="b2">button 2</button> 

的jquery

$(document).ready(function(){ 
    $("#b1").click(function(){ 
     $.getScript('externalscript.js'); 
    }); 
    $("#b2").click(function(){ 
     $("#load").load('test.html'); 
    }); 


}); 

加載元件

<input type="text" id="text" /> 

外部腳本

alert($("#text").val());