使用 JQuery 更改下一个 <td> 文本

Posted

技术标签:

【中文标题】使用 JQuery 更改下一个 <td> 文本【英文标题】:Change next <td> text with JQuery 【发布时间】:2012-07-26 23:34:59 【问题描述】:

我有像这样的网格行方案:

<tr>
    <td>110</td>
    <td><input class="client-chb" name="checkedRecords" type="checkbox" value="110" title="checkedRecords"></td>
    <td>Some name</td>
    <td>Some other name</td>
    <td>1.1.2012</td>
</tr>

我有一个功能,我可以获取所有选中的复选框,获取它们的值并通过 ajax 发送到服务器。

但我想在发布 ajax 帖子之前获得 3 和 4 &lt;td&gt; 并更改文本样式,例如:

<td><b>Some name</b></td>

我需要这个,反之亦然。或者更清楚地说,这是“标记为已读”和“标记为未读”的消息收件箱。

function MarkAsUnread() 
    var idata = new Array();
    $(".client-chb:checked").each(function() 
        var test = $(this);
        // maybe here, test -> find next td -> change text
        idata.push($(this).val());
    );
    //other logic

【问题讨论】:

【参考方案1】:

您可以尝试以下方法:

function MarkAsUnread() 
    var idata = new Array();
    $(".client-chb:checked").each(function() 
        $(this).closest('tr').find('td').slice(2, 4).wrapInner('<b/>')
        idata.push($(this).val());
    );

【讨论】:

我认为这可以简化为$("tr td").slice(2, 4).wrap("&lt;b&gt;"); @pimvdb wrap() 将包装TDs 而不是他们的文本?我错了吗? 是的,对不起,我的意思是.wrapInner 我添加了一些类,所以我像 $(this).closest('tr').find('td.ch-bold1').wrapInner(''); 【参考方案2】:

您已经遍历了 TD 中包装的输入元素,所以首先您要设置输入元素的父元素(复选框)并执行下一步..

喜欢,

function MarkAsUnread() 
    var idata = new Array();
    $(".client-chb:checked").each(function() 
        var test = $(this).parent();
        var next1 = test.next();
        var next2 = test.next().next();
        idata.push(next1.val());
        idata.push(next2.val());
    );
    //other logic

要获取或设置下一个和下一个 TD 的内容,请使用 next1.val() 和 next2.val()

【讨论】:

"UPDATING the revious comment...." 不是答案。如果您更新了某些内容,请让人们看到,直到您真正更新它。

以上是关于使用 JQuery 更改下一个 <td> 文本的主要内容,如果未能解决你的问题,请参考以下文章

检测 <td> 的内部 html 何时随 javascript 或 jquery 更改

jquery,更改父 td 的 css 类

无法使用 jQuery 传递焦点下一个输入

jquery遍历文档元素问题

如何使用 angularjs 或 jQuery 更改 HTML 表格中的文本颜色?

如果字段结果大于或等于另一个字段,我可以更改 <td> 背景吗?