標題可能會讓這個問題看起來比實際更簡單。首先,我對jQuery的瞭解,熟悉程度和技巧水平最多也不穩定,所以我很可能只是試圖用一種愚蠢的方式去做某件事,而這隻會讓一個noob變得有意義。將一個變量傳遞給一個函數
我有一個基於外部數據構建一堆文本字段的php生成頁面。這些字段將被轉換爲一種混合jQuery UI自動完成/組合框(如組合框,但允許自由文本)。我試圖將.click(function(...))分配給下拉按鈕時卡住了,我相信它必須處理這一事實,即我正在執行jQuery以通過for循環轉換所有文本字段並且var i沒有正確傳遞到.click函數中。
以下是完整的測試頁面,我的工作(幾乎所有的HTML和JS數組將通過PHP中生成):
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link type="text/css" href="../includes/css/redmond/jquery-ui-1.8.11.custom.css" rel="stylesheet" />
<script type="text/javascript" src="../includes/jquery-1.5.js"></script>
<script type="text/javascript" src="../includes/jquery-ui-1.8.10.custom.min.js"></script>
<style>
.ui-button { margin-left: -1px;width:18px; }
.ui-button-icon-only .ui-button-text { padding: 0; }
button.ui-button-icon-only {width:18px;height:21px;}
.ui-autocomplete-input { margin: 0; padding: 0; }
</style>
</head>
<body>
<form method="post" action="results.php">
<input class="TC_1" type="text" name="TC_1_1" value="E02_04" />
<script>
var availableTags = [['test1','test2','test3']];
</script>
<br/>
<input class="TC_1" type="text" name="TC_2_1" />
<script>
availableTags.push (['test5','test7','test9']);
</script>
<input type="submit" />
</form>
<script type='text/javascript'>
//<![CDATA[
var input = new Array();
var i = 1;
$('.TC_1').each(function(index) {
input[i] = $("[name=TC_"+i+"_1]").autocomplete({
source: availableTags[i-1],
select: function(){alert("selected");},
minLength: 0
}).addClass("ui-widget ui-widget-content ui-corner-left");
$("<button type='button'> </button>")
.attr("tabIndex", -1)
.attr("title", "Show All Items")
.insertAfter(input[i])
.button({
icons: {
primary: "ui-icon-triangle-1-s"
},
text: false
})
.removeClass("ui-corner-all")
.addClass("ui-corner-right ui-button-icon")
.click(function() {
var $input = $(this).before();
if ($input.autocomplete("widget").is(":visible")) {
$input.autocomplete("close");
return;
}
$(this).blur();
$input.autocomplete("search", "");
$input.focus();
});
i++;
});
//]]>
</script>
</body>
</html>
任何幫助將不勝感激。
編輯:對不起,我忘了補充一點,我得到 「錯誤:輸入[i]是未定義 行:62」
你能更具體地說明問題是什麼嗎? – 2011-05-02 22:48:04
您必須創建閉包才能使用i的正確值。 [Here](http://robertnyman.com/2008/10/09/explaining-javascript-scope-and-closures/)你可以在「臭名昭着的循環問題」部分找到有關閉包的信息 – 2011-05-02 22:51:16
順便說一下,你有'來自'each'函數的索引變量。用它代替'i'變量。當然,你可以把它改成'i'。如果你這樣做了,不要忘記刪除最後一個增量,每個函數都會爲你做。 – 2011-05-02 22:56:00