54

私のテーブルは次のとおりです。

<table id='demoTable'>
   <tr>
       <td>8: Tap on APN and Enter <B>www</B>.
           <INPUT id=h150000000000000109743 class=hid value="test value" type=hidden>
           <INPUT id=h250000000000000109743 class=hid1 value="26,222,98,10,50000000000000109744,T,~25,221,99,10,,T,www" type="hidden">
       </td>
   </tr>
</table>

8: Tap on APN and Enter <B>www</B>.
非表示フィールドに影響を与えずにテキストのみを変更したい

jQueryを試していますが、解決策が見つかりません

function changeText() {
    $("#demoTable td").each(function () {
        for (var i = 0; i < $(this).children.length; i++) {
            alert($(this).children(i).val());
        }
        // alert($(this).html());
        // $(this).text("hello");
        // alert($(this).html());
    });
}
4

6 に答える 6

75

jqueryでテキストノードを使用することは特にデリケートな作業であり、ほとんどの操作はそれらを完全にスキップするように行われます。

<span>間違ったノードを注意深く回避するという問題を経験する代わりに、たとえば、置き換える必要があるものをすべてラップしてみませんか。

<td><span class="replaceme">8: Tap on APN and Enter <B>www</B>.</span></td>

それで:

$('.replaceme').html('Whatever <b>HTML</b> you want here.');
于 2012-12-11T09:46:36.200 に答える
5
$('#demoTable td').contents().each(function() {
    if (this.nodeType === 3) {
        this.textContent
        ? this.textContent = 'The text has been '
        : this.innerText  = 'The text has been '
    } else {
        this.innerHTML = 'changed';
        return false;
    }
})

http://jsfiddle.net/YSAjU/

于 2012-12-11T09:22:02.887 に答える
5

textnode を削除し<b>、入力に触れずにタグを必要なものに置き換えます。

$('#demoTable').find('tr > td').contents().filter(function() {
    return this.nodeType===3;
}).remove().end().end()
  .find('b').replaceWith($('<span />', {text: 'Hello Kitty'}));

フィドル

于 2012-12-11T09:17:23.937 に答える
1

どうですか:

function changeText() {
    $("#demoTable td").each(function () {
       $(this).html().replace("8: Tap on APN and Enter <B>www</B>", "");
    }
}
于 2012-12-11T09:12:58.280 に答える
0

削除するコンテンツを ptag 内にラップすると、次のようなことができます。

$(function(){
  $("td").click(function(){ console.log($("td").find("p"));
    $("td").find("p").remove();    });
});

フィドルのデモ: http://jsfiddle.net/y3p2F/

于 2012-12-11T09:17:00.537 に答える