将输入控件动态添加到 jQuery DataTables
Add input controls to jQuery DataTables dynamically
首先声明我不是专业的前端 (jQuery/JavaScript) 开发人员。我在当前项目中使用 jQuery DataTables plugin,并在 table 的所有单元格(除 headers 之外的所有行和列)中呈现 Bootstrap timepicker 控件。
<tr>
<td>
<div id ="abc">
<div class="times-div">
<div class="time-label col-sm-6 ">Time</div>
<div class="time-view col-sm-6 bootstrap-timepicker">
<input id="open" type="text" value="" class="timepicker" style="border: 0px; padding: 0px; margin: 0px; width: 100%;">
</div>
</div>
</td>
</tr>
后跟一个动作 link
添加时间
要求是当我点击操作link时,添加时间,新的输入控件应该出现在同一个单元格中。即,应在同一单元格中创建另一个具有 id("abc") 的 div。
我想知道是否可以使用任何数据插件table?我尝试通过操纵 html like
来使用肮脏的方式
var element = document.getElementById("abc");
var parent = element.parentNode;
var newdiv = document.createElement('div');
newdiv.innerHTML = '<div class="times-div">
(满 html div 块然后)
parent.appendChild(newdiv);
这是在添加控件,但时间选择器事件不起作用。我知道这不是一个好方法,但仍然尝试过 :)。我还使用了几个从代码中删除的数据属性来简化代码。
我期待在单击添加时间时添加输入控件的一种更简洁的方式 link 并且我正在保存时间选择器控件的更改事件的数据。
您可以使用以下语法创建新元素:
var el = $('<div>', {id: 'abc', text: 'Some text'});
并将其附加到您选择的元素,如下所示:
parent.append(el);
您可以像这样创建动态复选框
$('#containerId').append('<input type="checkbox" name="myCheckbox" />');
其中 containerId 是要添加复选框的 DOM 元素的 ID。
或替代语法...
$('#containerId')
.append(
$(document.createElement('input')).attr({
id: 'myCheckbox'
,name: 'myCheckbox'
,value: 'myValue'
,type: 'checkbox'
})
);
有关详细信息,请参阅以下内容 link:create dynamically radio button in jquery
我想 bootstrap 只会初始化加载 dom 时出现的时间选择器。
您可能需要使用
初始化您稍后添加的那些
$('.bootstrap-timepicker').timepicker();
当我动态添加任何我想使用的东西时,我会在某个时间点调用另一个函数,我通常会做这样的字符串:
var appendString = "<div class=\"FieldSelector\"onclick=\"SomeOtherFunction('" + $(this).text() + "')" + "\">" + $(this).text() + "</div>";
然后追加它并创建一个你想用来做这些事情的函数。在这种情况下,我的功能是
SomeOtherFunction(valueIamPassingIn)
{
//Do Something
}
首先声明我不是专业的前端 (jQuery/JavaScript) 开发人员。我在当前项目中使用 jQuery DataTables plugin,并在 table 的所有单元格(除 headers 之外的所有行和列)中呈现 Bootstrap timepicker 控件。
<tr>
<td>
<div id ="abc">
<div class="times-div">
<div class="time-label col-sm-6 ">Time</div>
<div class="time-view col-sm-6 bootstrap-timepicker">
<input id="open" type="text" value="" class="timepicker" style="border: 0px; padding: 0px; margin: 0px; width: 100%;">
</div>
</div>
</td>
</tr>
后跟一个动作 link
添加时间
要求是当我点击操作link时,添加时间,新的输入控件应该出现在同一个单元格中。即,应在同一单元格中创建另一个具有 id("abc") 的 div。
我想知道是否可以使用任何数据插件table?我尝试通过操纵 html like
来使用肮脏的方式var element = document.getElementById("abc");
var parent = element.parentNode;
var newdiv = document.createElement('div');
newdiv.innerHTML = '<div class="times-div">
(满 html div 块然后)
parent.appendChild(newdiv);
这是在添加控件,但时间选择器事件不起作用。我知道这不是一个好方法,但仍然尝试过 :)。我还使用了几个从代码中删除的数据属性来简化代码。
我期待在单击添加时间时添加输入控件的一种更简洁的方式 link 并且我正在保存时间选择器控件的更改事件的数据。
您可以使用以下语法创建新元素:
var el = $('<div>', {id: 'abc', text: 'Some text'});
并将其附加到您选择的元素,如下所示:
parent.append(el);
您可以像这样创建动态复选框
$('#containerId').append('<input type="checkbox" name="myCheckbox" />');
其中 containerId 是要添加复选框的 DOM 元素的 ID。
或替代语法...
$('#containerId')
.append(
$(document.createElement('input')).attr({
id: 'myCheckbox'
,name: 'myCheckbox'
,value: 'myValue'
,type: 'checkbox'
})
);
有关详细信息,请参阅以下内容 link:create dynamically radio button in jquery
我想 bootstrap 只会初始化加载 dom 时出现的时间选择器。
您可能需要使用
初始化您稍后添加的那些$('.bootstrap-timepicker').timepicker();
当我动态添加任何我想使用的东西时,我会在某个时间点调用另一个函数,我通常会做这样的字符串:
var appendString = "<div class=\"FieldSelector\"onclick=\"SomeOtherFunction('" + $(this).text() + "')" + "\">" + $(this).text() + "</div>";
然后追加它并创建一个你想用来做这些事情的函数。在这种情况下,我的功能是
SomeOtherFunction(valueIamPassingIn)
{
//Do Something
}