2
<div class="pad" id="test" contenteditable="true" spellcheck="false">
    <div id="a0" class="lines" > text1</div>
</div>

コンテンツの編集可能なdivがあり、その中に多くの子divがあり、ユーザーがEnterキーを押して(jQueryを使用して)次の行に移動すると動的に生成されます。子divの例は、上記のid='a0'です。

目的:一意のIDを動的に生成し、これらの動的に生成された子divに割り当てること。

以下は、このタスクを実行するために使用したjQueryです。

function getSelectedNode()

これは、ユーザーが現在入力している行(つまり、子div)の「id」を返す関数です。

var lineCount=0;

lineCount変数の値は、生成された子divの総数と同じです。

 $(currentLine).next().attr('id','a'+(++lineCount));

ここには、ユーザーが現在入力している行のIDcurrentLineが含まれています。Enterキーを押すと、現在のdivの後に新しいdivが自動的に生成され、を使用してアクセスし、を使用して新しいidを割り当てようとします。.next().attr('id','a'+(++lineCount))

jQueryのselector句で絶対値を渡すと、新しい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));
    }
});
4

1 に答える 1

0

Javascript はシングル スレッドなので、これには int を使用できます...

var indexer = 0;
function getUniqueId(){
   indexer++;
   return indexer.toString();
}

警告: ほとんどの Web アプリケーションでは、ドキュメント レベルで関数とプロパティを宣言することはお勧めしません。この方法さえあれば、実装は簡単です...

$("<div id='myDiv" + getUniqueId() + "' />");
于 2013-03-12T14:09:21.407 に答える