我有以下HTML代码:
<table><tbody><tr><td>
<div id="div_1">
<style>...</style>
<div><label> 1 </label></div>
<div><input type="text" name="text_1"/></div>
<script>$("#text_1").mask("99/99/9999");</script>
<div><label><a onclick="javascript:insert_div()"> </a></label></div>
...
</div>
...
<div id="div_20">
<style>...</style>
<div><label> 1 </label></div>
<div><input type="text" name="text_20"/></div>
<script>$("#text_20").mask("99/99/9999");</script>
<div><label><a onclick="javascript:insert_div()"> </a></label></div>
...
</div>
</td></tr></tbody></table>
生成这个(实际上从1到20):
当用户按下箭头按钮时,我需要插入一个全新的div。它应该使用脚本和样式复制div,并在其后插入一个新数字(例如21,然后是22等)。
答案 0 :(得分:1)
我给你一个基本的想法:剩下的如果留下作为老师说的练习:
<script type="text/javascript">
var last_inserted = 0;
function insert_div(){
$d = $("#div_" + last_inserted).clone();
$d.attr('id', 'div_' + last_inserted++);
$("table").append($d);
}
</script>
还有别的:<a onclick="javascript:insert_div()">
可能不正确(未经测试)。
:<a onclick="insert_div()">
或<a href="javascript:insert_div()">
答案 1 :(得分:1)
这纯粹是执行此任务的另一种方式的教学示例。故意提供想法。
建议:使用jQuery时避免使用基于属性的事件处理程序:
澄清我的第一条评论。如果使用onclick=javascript
处理程序,则将事件的注册放在HTML中,与脚本中的实际处理程序分开。 “jQuery方式”是将处理函数应用于选择的元素,使用.click()
之类的方法和我在下面使用的相当有用的.on()
。这样可以更轻松地维护页面,因为您没有浏览HTML for JavaScript代码段。 jQuery事件处理程序还支持为同一事件提供多个处理程序,这些处理程序附加到您无法使用onclick=
执行的元素。
显示的概念:
<script>
块中的模板来保存您的模板HTML(此text/template
类型未知,因此被所有浏览器忽略。它还使维护变得轻而易举。$(html)
mask
。JSFiddle: http://jsfiddle.net/TrueBlueAussie/Lu0q0na2/2/
// Declare a global counter for our new IDs
id = 2;
// Listen for click events at a non-changing ancestor element (delegated event handler)
$(document).on('click', '.addnew', function(e){
// get the HTML of the template from the dummy script block
var template = $('#template').html();
// Change the template names etc based on the new id
template = template.replace('{name}', 'name' + id).replace('{id}', id);
// Increase next id to use
id++;
// Convert the HTML into a DOM tree (so we can search it easily)
var $template= $(template);
// Apply the mask to the newly added input - alter this to suit
$template.find('input').mask("99/99/9999");
// Append the new row
$('table').append($template);
// stop the link from moving to page top
return false;
});
如果您有任何疑问,我将很乐意解释其中的任何部分。我意识到与你现有的做法相比,这可能会有点震撼:)