2017-08-01 2 views
0

trを作成してから、htmlテーブルの最初の行に置き換えようとしています。 私は変数newHeaderRowを持っています。そこでjQueryオブジェクトを追加してから、replaceWithを使って、テーブルの最初の行をこの変数に置き換えます。 問題は、最初の行の代わりに、[オブジェクトのオブジェクト] [オブジェクトのオブジェクト] [オブジェクトのオブジェクト]jQueryオブジェクトの使用中にtrが間違った結果を表示する

しかしそれだけ

を示さないDOM要素がテーブルに追加されていないこと

あります私は

 result = $("<td/>", 
    { 
     align: "center", 
     colspan: var1 
    }).text("something"); 

    newHeaderRow += result; 
のようなDOM要素を作成して自分のコードで3部を持って

具体的には

iが行を交換する

 $('tr[class*="row#"]').eq(n) 
     .replaceWith(newHeaderRow); 

を使用newHeaderRowに加え、いくつかのTDS後。

私は私が無地のJavaScriptを使用している場合、私は何か

result = "<td align='center' colspan='" + countGroupBys + "'>" + "something" + " 
    </td>" 

を使用して、私はnewHeaderRowで3つの文字列を追加し、それが動作するreplaceWith使用することを知っています。 しかし、コードを長くして文字列を読みにくくしたくありません。

jQueryの用語では、置き換えのDOM要素をどのように渡してテーブルを変更できますか?

+2

'result'はjQueryオブジェクトは、あなたがnewHeaderRow'にそれを連結することはできませんされて'を文字列として返します。 – DarthJDG

+0

私は例として –

+0

のようにフィドルを準備することをお勧めします。そうすれば可能な場合はjQueryObjectを文字列に変換する必要があります。 –

答えて

-1

$()はjQueryオブジェクトを返すので)あなたがここにそうであるようにあなたは、オブジェクトを連結することはできません。

result = $("<td/>", 
{ 
    align: "center", 
    colspan: var1 
}).text("something"); 

newHeaderRow += result; 

しかし、代わりに、あなたはあなたの要素のコンテンツを取得する必要があるので、あなたが最後に変更することができますがこの1とライン:あなたが唯一のjQueryオブジェクトとそれを交換する必要がある場合

newHeaderRow += result[0].outerHTML; 

明らかに、[0].outerHTMLの必要はありません。 別のポイント:.replaceWith()もターゲット要素(この場合は<tr>)を置き換えますので、newHeaderRowにも<tr>タグが含まれていることを確認してください。

+1

私はそれを試しましたが、それはちょうどtdsのテキストを表示します.. –

+0

' result.html() 'は' result'の内部だけを返します – charlietfl

+0

html() 。更新されたコードをご覧ください。 – Grork

1

文字列のようにjQueryオブジェクトを追加しようとしています。最初に文字列に変換してみてください。

newHeaderRow += result[0].outerHTML; 

var newTds = ""; 
 
for (var i = 0; i < 3; i++) { 
 
    var td = $('<td>', { 
 
    align: "center", 
 
    colspan: 1 
 
    }).text('Header: ' + (i+1)); 
 
    
 
    newTds += td[0].outerHTML 
 
} 
 

 
$('#apple').replaceWith(newTds)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<table> 
 
    <tr> 
 
    <td id="apple"> 
 
     Apple 
 
    </td> 
 
    </tr> 
 
</table>

newHeaderRow += result; 

このなる必要があります:あなたはそれがouterHTML

ための内部Node要素を尋ねることによってこれをこれを行いますこのフィドルで

例: https://jsfiddle.net/fghajk48/

+0

偉大な答え私の友人...それは私の問題のおかげで解決.. –

0

はちょうどそれにnewHeaderRow jQueryオブジェクトとappend()セルオブジェクトを作る

var newHeaderRow = $('<tr>'); 

// ...... 

result = $("<td/>", { 
    align: "center", 
    colspan: var1 
}).text("something"); 

newHeaderRow.append(result); 

//..... 

$('tr[class*="row#"]').eq(n) 
    .replaceWith(newHeaderRow); 
関連する問題