我有一個簡單的表單,其中每行包含3個輸入字段。在其中一個字段上,我使用jscolor.js(字段有class="color"
,因此綁定了JS)。使用委託()的新添加的元素將不會綁定jscolor.js
但是,當我使用jQuery的delegate()
添加新行時,輸入字段不綁定JS,並且預期的功能不存在。 http://jsfiddle.net/alexwald/qARzP/
<script>
var line = '<li class="form_line" id="line">
<span>
<label for="item">Item:</label>
<input type="text" required="required" placeholder="what item is this?" id="item" name="item[]>
</span>
<span>
<label for="amount">Amount: </label>
<input required="required" type="number" id="amount" name="amount[]>
</span>
<span>
<label for="color">Color: </label>
<input type="text" required="required" class="color {pickerClosable:true, hash:true ,pickerFace:3,pickerBorder:0}" id="color" name="color[]">
</span>
</li>';
$(document).ready(function() {
$("form").delegate(".add", "click", function(){
$('ul').append(line);
}); // end of adding
}); //end of main func
</script>
我認爲這個問題是無論是在:
- 我如何定義
line
變量,或 - 我使用的是不正確的選擇與
.delegate
,所以它應該是別的東西不是form
..?
任何幫助非常感謝。
1.是的我沒有意識到這一點,即使jslint不斷從控制檯內向我尖叫:)現在就把它刪除了。 2.因爲我可能不太瞭解代理()的含義。每當添加新元素時,我都傾向於使用它。我現在有一個更好的主意。 3.我知道這可能是罪魁禍首。非常感謝您指出! – AlexW
我試圖做同樣的事情,但是當我嘗試「新jscolor.color」行,我得到以下錯誤: 類型錯誤:valueElement.setAttribute不是一個函數 /Scripts/jscolor/jscolor.js 909線 – chill182