【发布时间】:2014-11-02 05:16:51
【问题描述】:
创建页面时我有一个只有一行的表格:
<TD><INPUT type="text" name="when"/></TD>
所以当用户点击这个元素时,会出现一个日期选择器:
$(document).ready(function() {
$('[name="when"]').datepicker();
});
当用户向该表添加新行时,我调用 setClass 函数在新行(所有行)上设置它:
function setClass() {
$('[name="when"]').datepicker();
}
但这不适用于这些动态创建的行。为什么?
这就是我添加行的方式:
<INPUT type="button" value="Add Row" onclick="addRow('dataTable')" class="add_remove_row" />
function addRow(tableID) {
var table = document.getElementById(tableID);
var rowCount = table.rows.length;
var row = table.insertRow(rowCount);
var colCount = table.rows[1].cells.length;
for(var i=0; i<colCount; i++) {
var newcell = row.insertCell(i);
newcell.innerHTML = table.rows[1].cells[i].innerHTML;
switch(newcell.childNodes[0].type) {
case "text":
newcell.childNodes[0].value = "";
break;
case "checkbox":
newcell.childNodes[0].checked = false;
break;
case "select-one":
newcell.childNodes[0].selectedIndex = 0;
break;
}
}
setClass();
}
【问题讨论】:
-
@DavidThomas 他没有绑定事件,他正在初始化一个插件,所以委托不是答案。
-
@Barmar:好点子,不知怎的,我错过了
setClass()函数中的内容>。 -
这似乎是一种非常类似于 jQuery 的方式来向表中添加新行(而不是说克隆)。您似乎还需要更具体地使用您的
setClass()方法,以便仅针对新添加的行上的输入。现在,您将尝试在已初始化的输入上初始化日期选择器(不确定这可能会导致什么行为)。 -
@MikeBrant 这不会导致问题,因为 datepicker 会记住它已经初始化的元素,并且不会重新初始化它们。
-
是的@Barmar,这种行为是问题的核心!打败你13秒!! :)
标签: javascript jquery html jquery-plugins