2010-12-01 66 views
1

不知道如果我是完全錯誤的在這裏,但我想要做這樣的事情:使用Javascript/jQuery函數

  1. 有一個外部JS頁面(在外部服務器上)
  2. 包括頁面 - OK這很容易...
  3. 在外部頁面上有一個jquery功能 - 其實很多功能
  4. 直接調用這些函數到頁面上。

所有有點像這樣:

外部JS頁:

$(document).ready(function() { 

function testit() { 
$('#test').load('page.php'); 
} 

function testit_1() { 
$('#test_1').load('page_1.php'); 
} 


function testit_1() { 
$('#test_2').load('page_2.php'); 
} 

}); 

然後實際的頁面上只要致電:

<script type="script/javascript"> 

testit(); 

</script> 

<div id="test"></div> 

我錯了或者應該說不行?

+0

你做得很好,因爲沿着頁面加載篝火你打電話給你的測試你應該是好的。 – kobe 2010-12-01 16:59:47

+0

您當前的代碼會將page.php的內容加載到`

`中。你是說,在page.php中,有代碼運行testit_1,並在page_2.php上運行testit_2? – idrumgood 2010-12-01 17:00:30

+0

我改變了我的評論作爲答案,嗯 – kobe 2010-12-01 17:01:29

回答

1

您的函數對作爲參數傳遞給$(document).ready()的匿名函數的作用域是局部的。下面是顯示您所看到的行爲,一個簡單的例子:

(function() { 
    function foo() { 
     alert("It shouldn't alert this..."); 
    } 
})(); 

foo(); 

要解決它,只需將現成功能之外你的函數聲明:

function testit() { 
    $('#test').load('page.php'); 
} 

function testit_1() { 
    $('#test_1').load('page_1.php'); 
} 


function testit_2() { 
    $('#test_2').load('page_2.php'); 
} 

,並使用現成的功能(簡寫$(function() { ... }))在你的主要js文件中:

$(function() { 
    testit_1(); 
}); 
$(function() { 
    testit_1(); 
}); 
0

這應該可以正常工作。只是一定要包括在你的頁面的外部JS文件並執行調用testIt()內的另一個$。就緒()調用:

<script type="script/javascript" src="http://someurl.com/external.js"></script> 
<script type="script/javascript"> 
    $.ready(function() { 
     testit(); 
    }); 
</script> 

<div id="test"></div> 

一個JS文件的位置是無關緊要的。一旦它被加載到您的頁面中,它將在該頁面的上下文中執行。

1

我不確定我是否錯誤地理解了你,但是你會加載外部服務器的外部頁面嗎?在普通的瀏覽器安全設置中這是不可能的。對於駐留在不同服務器上的文檔,您無法執行成功的XMLHttpRequest。幾乎所有的瀏覽器都會阻止這一切,併爲你留下任何東西。您必須編寫一個服務器端代理來獲取文檔並將其提供給客戶端。

2

您不需要在ready函數中定義函數,但必須在ready函數中調用它。

$(document).ready(function() { 
    testit(); 
}); 

function testit() { 
    $('#test').load('page.php'); 
} 

function testit_1() { 
    $('#test_1').load('page_1.php'); 
} 


function testit_2() { 
    $('#test_2').load('page_2.php'); 
} 

否則會在加載文檔之前調用testit()。在那個時候,你的例子中還沒有這個功能。