2010-08-29 88 views
2

我有一塊jQuery代碼,它將輸入按鈕附加到正文,然後爲其分配一個onclick函數。要調用的函數已經在其他地方定義過,並且有兩個參數,它們是之前定義的變量。未捕獲的SyntaxError:意外的令牌}

這是我目前使用的代碼:說

$("body").append("<input type='submit' value='foo' onclick='foo(\'" + argument1 + "\',\'" + argument2 + "\'/>"); 

然而,當我嘗試點擊該按鈕時,我得到一個錯誤(在Chrome):未捕獲的SyntaxError:意外的標記}。

任何人都可以幫助我嗎?

回答

5

您應該指定使用jQuery單擊處理:

var input = $('<input type="submit" value="foo" />') 
    .click(function() { foo(argument1, argument2); }) 
    .appendTo(document.body); 

注意,這將通過參考捕捉參數變量。

+1

+1。嘗試在事件處理程序屬性中將絃樂變量傳遞到JavaScript片段中是瘋狂的 – bobince 2010-08-29 20:56:17

3

您還沒有關閉,把foo()函數在onclick

1

假設argument1 == '1'argument2 == '2',你.append會給

<input type='submit' value='foo' onclick='foo('1','1'/> 

這顯然是不合法的HTML。要修復它,你應該使用

.append("<input ... onclick='foo(\"" + argument1 + "\",\"" + argument2 + "\")'/>") 

但這不是正確的方式來使用jQuery。有關更好的代碼,請參見@SLaks's answer

+0

正如Mike所寫,你仍然缺少''''''。 – 2010-08-29 20:55:34

+1

@彼得:固定。 – kennytm 2010-08-29 20:58:29

相關問題