2012-02-22 88 views
-2

我想做一個動態函數,但我遇到了麻煩,因爲我似乎無法在JS函數中運行我的JQuery代碼。我有一個工作示例here如何在JavaScript函數中運行JQuery

我有第二個例子here。兩者之間的jsfiddle的,唯一的區別是,我切換通話功能從:

$('#btnAdd').click(function() { 

這個調用函數:

function addBtn(){ 

,並在delBtn相同。我想這樣做的原因是我可以傳遞一個參數,所以我知道如果我想添加另一個問題字段或答案字段。

+2

什麼問題? – gdoron 2012-02-22 21:26:54

+0

如何在JavaScript函數中運行JQuery – user1082764 2012-02-22 21:29:56

+0

這就像每個javascript代碼一樣...... jQuery是Javascript上的抽象,而不是某種魔術。 – gdoron 2012-02-22 21:31:08

回答

3

jsFiddle在默認情況下將JavaScript代碼封裝在閉包中(即函數是私有變量)。你必須選擇「無包裹(身體)」:http://jsfiddle.net/UpEvK/2/

+0

o,我沒有意識到這是一個jsFiddle問題。我很沮喪,因爲我沒有看到任何問題。非常感謝! – user1082764 2012-02-22 21:29:36

0

您提供的兩個代碼片段在功能上是不同的。

這實際上是註冊的單擊事件:

$('#btnAdd').click(function) 

在這種情況下,「功能」僅僅是一個回調函數,當點擊事件被觸發,你想調用的函數的名稱。因此,與你的第二個JS提琴工作,你就必須做到以下幾點:

$('#btnAdd').click(addBtn); 

如果你可以給我們介紹一下你實際上是試圖用代碼做一些更多的信息,我們也許能夠提供更詳細的答案。

+0

啊,對不起,我錯過了你在第二個JSFidle的html中添加了onclick屬性,pimvdb的答案是正確的 – 2012-02-22 21:36:22

0

我會從代碼中獲取代碼。您可以使用:

$('#btnAdd').click(function() { 
    addBtn(); 
}); 

,因爲現在你有多個:把一類= 'btnAdd' 的標記不onclick句柄和使用:

$('.btnAdd').live('click',function() { 
    addBtn(); 
}); 

新的標記:

<input class="btnAdd" type="button" value="Add Question" /> 

編輯:現在支持兩者的最終腳本:

$('.btnAdd,#btnAdd').live('click',function() { 
    addBtn(); 
}); 

注意1.7.1 jQuery用戶;用途:

$(document).on('click','.btnAdd,#btnAdd',function() { 
    addBtn(); 
});