1

before()、append()、wrap() を見てきました。どれも私が必要としているものではありません。

私がやろうとしていることの疑似説明:

<div>クラスによって選択された の「リスト」を処理しています。.text() がある「行」から挿入したい次の行に変更された場合 (たとえば) <div class="wrapper">、.text() が再び変更されたときに、前のラッパーを閉じてから新しいラッパーを開始したい ( </div><div class="wrapper">) など.

最後に、(.text() に基づく) 「行」のように、指定された<div class="wrapper">.

私が言及したメソッドのいずれかを使用しようとすると、それぞれ何らかの方法で終了タグが強制されます。div を追加してから、終了タグを自分で追加したいと考えています。かなり単純なニーズのようですが、実行可能な解決策が見つからないようです。

4

4 に答える 4

5

できません。

タグを閉じなくても、どうにかして不適切な HTML を挿入すると、ブラウザはタグを閉じようとします。必要に応じて、タグのコンテンツに追加するだけです。

于 2012-08-06T19:02:24.990 に答える
3

簡単な答えは、DOM を操作しているときに壊れたタグを挿入できないということです。ただし、考え方を変えることはできます。を追加しようとする代わりに、非常に多くの要素を追加する代わりに<div>、次</div><div>のように切り替えます。

var $d = $('<div>').appendTo('#container');
$d.append(/*match*/);
$d.append(/*match*/);
$d.append(/*match*/);
$d = $('<div>').appendTo('#container');
$d.append(/*match*/);
$d.append(/*match*/);
$d.append(/*match*/);

等々。基本的には<div>、要素をマークアップでラップするのではなく、要素を に移動するように思考プロセスを変更します<div>

実行中の集計を維持してから、テキストの変更時にリストをリセットすることもできます (説明したように)。例えば

var matches = [],
    $d = $('div');
$d.each(function(){
    var $t = $(this);
    if(matches.length > 0 && $(matches[0]).text() != $t.text()){
        $('<div>',{'class':'wrapper'}).append(matches)
            .appendTo('body');
        matches = [];
    }
    matches.push(this);
});
if(matches.length > 0){
    $('<div>',{'class':'wrapper'}).append(matches)
        .appendTo('body');
}

上記の例

于 2012-08-06T19:04:42.070 に答える
0

プログラムで要素をDOMに追加すると、要素が完全に作成されます(開いた状態と閉じた状態の両方)。

リストを作成してエントリを追加できるようにしたい場合は、appendChild() を使用します。

これにより、リスト内にエントリを追加できます。

于 2012-08-06T19:08:36.670 に答える
-4

http://jsfiddle.net/XH2hp/

//can't form the tag normally, must use html entities.
$('div').append('&lt;p&gt;');//this is a non-closing <p> tag
$('div').append("Hey, I'm some text between two P tags. How does that work?!");
$('div').append('&lt;/p&gt;');//this is the closing </p> tag

//In order for the the DOM to get updated with the proper markup, we must process the HTML entities, .text() will do that for us.
$('div').html($('div').text());
于 2012-08-06T19:05:32.943 に答える