<div class="pad" id="test" contenteditable="true" spellcheck="false">
<div id="a0" class="lines" > text1</div>
</div>
我有一个内容可编辑的 div,其中有许多子 div,当用户按下 ENTER 键(使用 jQuery)转到下一行时,这些子 div 会动态生成。子 div 的示例是上面的id='a0'。
目标:动态生成唯一的 id 并将其分配给这些动态生成的子 div。
下面是我用来完成此任务的 jQuery。
function getSelectedNode()
这是返回用户当前正在输入的行(即子 div)的“id”的函数。
var lineCount=0;
lineCount变量的值等于生成的子 div 的总数。
$(currentLine).next().attr('id','a'+(++lineCount));
这里currentLine
包含用户当前正在输入的行的id。按下 ENTER 键后,新 div 会在当前 div 之后自动生成,我尝试访问 using.next()
并尝试使用 为其分配新 id .attr('id','a'+(++lineCount))
。
如果我在 jQuery 的选择器子句中传递绝对值,则分配新 id 的过程效果很好,即:
$('#a0').next().attr('id','a'+(++lineCount));
代替
$(currentLine).next().attr('id','a'+(++lineCount));
var lineCount = 0;
var currentLine = "#a0";
function getSelectedNode() {
if (document.selection)
return document.selection.createRange().parentElement();
else {
var selection = window.getSelection();
if (selection.rangeCount > 0)
return selection.getRangeAt(0).startContainer.parentNode;
}
}
$('.pad').keypress(function (event) {
var keycode = (event.keyCode ? event.keyCode : event.which);
if (keycode == '13') {
var sn = getSelectedNode();
currentLine = "#" + sn.getAttribute('id');
$(currentLine).next().attr('id', 'a' + (++lineCount));
}
});