0

これは私のjsコードです:

    $("tr[id^=list2ghead_]").each(function(){
                    j = i+1;
                    id_name = $(this).attr("id");
                    id_name_lenght = id_name.length;
                    if (i >= 10){
                        id_name = id_name.substr(0, id_name_lenght-2);
                    }else{
                        id_name = id_name.substr(0, id_name_lenght-1);
                    }
                    html = $("#"+id_name+i).nextUntil("#"+id_name+j).outerHTML;
                    $("#"+id_name+i).nextUntil("#"+id_name+j).remove();
                    html = "<div class='content'>"+html+"</div>";
                    $(html).insertAfter("#"+id_name+i);
                    i++;
 });

2 つの ID の間で HTML コンテンツを取得したいと考えています。その後、この HTML をdiv「コンテンツ」クラスの に追加し、既存の HTML を削除し、ID の後に HTML を新しいdiv. outerHtmlを返すようになりましundefinedた。私は何をすべきか ?

これは、jQgrid プラグインによって生成された htnml コードです。 ここに画像の説明を入力

4

3 に答える 3

0

.outerHTMLjQuery セレクションのプロパティではありません。

選択範囲をある場所から別の場所に移動する方法は次のとおりです。

var $div = $('<div class="content"></div>');
var $selection = $("#"+id_name+i).nextUntil("#"+id_name+j);
$div.append($selection).insertAfter("#"+id_name+i);
于 2014-08-07T12:55:52.413 に答える
0

jQuery と Javascript の outerHTML プロパティを使用できます。両方のノードが同じレベルにある場合:

var theHtml = "";
var id1 = "beginId";
var id2 = "endId";
var $node = $("#" + id1);
var nodes = new Array();
while($node.attr("id") != id2)
{
    nodes.push($node);
    theHtml += $node.get(0).outerHTML;
    $node = $node.next();
}
nodes.push($node); // Edit: also add the second node to the list
theHtml += $node.get(0).outerHTML; // Get the HTML of node with id2

$.each(nodes, function() {
    $(this).remove();
});

$(".content").attr("id","theHtml").html(theHtml);

これには、id1 と id2 を持つ両方のノードの html が含まれます。

于 2014-08-07T12:56:55.520 に答える
0

jQuery オブジェクトには、outerHTML プロパティがありません。プロパティを取得するには、prop メソッドを使用できます。$collection.prop('outerHTML'). propゲッターは最初に一致した要素の値を返すため、コレクションを反復処理してプロパティを個別に読み取る必要があることに注意してください。

var outerHTML = $("#"+id_name+i).nextUntil("#"+id_name+j).map(function() {
    return this.outerHTML;
}).get().join('');

div要素は子を持つことができないことに注意してくださいtr!

インデックスとeqメソッドを使用して次の要素を取得することもできます。

var $col = $("tr[id^=list2ghead_]");

$col.each(function(i) {
   var $next = $col.eq(i + 1);
   var $between = $(this).nextUntil($next); //.filter('.jqrow');
   var outerHTML = $between.map(function() {
        return this.outerHTML;
  }).get().join(''); 

  console.log(outerHTML);    
});
于 2014-08-07T12:58:32.363 に答える