使用jQuery更改/替换表列值

时间:2012-03-06 11:34:34

标签: jquery sharepoint-2010 html-table tablerow

我有以下表结构:

<table class=ms-listviewtable>
  <tr class="ms-itmhover">
    <td class="ms-vb2">Value1</td>
    <td class="ms-vb2">Value2</td>
    <td class="ms-vb2">Value3</td>
    <td class="ms-vb2 ms-lastCell">Value4</td>
  </tr>
</table>

我希望能够将当前“Value4”的最后一列的值更改为“changedValue”,例如使用jQuery;

我写了以下内容,但它似乎根本没有用,不确定我哪里出错:

$(document).ready(function() {
  $('.ms-vb2 .ms-lastCell').each(function() {
    var lastColumn = $(this).html();
    var replaceValue = lastColumn.Append("Changed Content");

    $(this).html(replaceContent);
  });
});

任何建议都将不胜感激。

6 个答案:

答案 0 :(得分:3)

我知道您要将文字附加到最后一个td。这是

的代码
jQuery('.ms-lastCell').each(function() {

 var lastColumn = $(this).html();
 var replaceValue = lastColumn + "Changed Content";

jQuery(this).html(replaceValue );


});

http://jsfiddle.net/G3eYh/13/

答案 1 :(得分:2)

首先,您的选择器不正确:

$('.ms-vb2.ms-lastCell')

由于这两个类都属于一个td,因此必须放置它们没有任何空间。对于空格,这意味着有一个元素类ms-vb2,并且在该元素中还有另一个具有类ms-lastCell的元素。

你也想要使用.text()而不是html()和一个简单的javascript字符串连接:

var lastColumn = $(this).text();
var replaceValue = lastColumn + "Changed Content";
$(this).text(replaceContent);

答案 2 :(得分:2)

在选择器中有一个空格分隔您的类名,而不需要一个,您只需要更改文本而不是html。

请参阅jsFiddle here

答案 3 :(得分:1)

以下行有三个问题:

$('.ms-vb2 .ms-lastCell).eachl(function() {
  1. 您在'之后没有结束lastCell
  2. 选择器中的空格意味着您将选择.ms-lastCell元素后代的任何.ms-vb2元素。如果您删除该空格并说'.ms-vb2.ms-lastCell',则会找到包含这两个类的元素。
  3. 你拼错了.each(最后有一个l)。
  4. .each()回调的内容存在一些问题。第一行是OK,它获取单元格的内容。但那时:

    var replaceValue = lastColumn.Append("Changed Content");
    

    我不确定您在此处尝试做什么,但lastColumn字符串,字符串不具有{{1 }} 方法。如果您想要添加到现有值,您可以说:

    Append()

    如果您只想替换它,请说:

    var replaceValue = lastColumn + "Changed Content";
    

    如果您打算丢弃旧值并只提供一个新值,您可以跳过所有这些并说:

    var replaceValue = "Changed Content";
    

    最后,当只有一个单元格与您的选择器匹配时(或者当您想要将所有匹配元素更新为相同的值时),您真的不需要使用$(this).html("Changed Content"); ,所以您可以这样做:

    .each()

    或者,如果要添加到现有内容,可以使用采用回调函数的 $('.ms-vb2.ms-lastCell').html("Changed Content"); 方法的语法:

    .html()

    jQuery调用你的回调函数传递旧值,这样你可以处理它,但是你认为合适,然后你返回的值就成了元素的新html内容。如果多个元素与您的选择器匹配,则将依次为每个元素调用回调。

答案 4 :(得分:0)

$(document).ready(function() {
    $('.ms-lastCell').each(function() {
        var lastColumn = $(this).html(); 
        var replaceValue = lastColumn.Append("Changed Content");
        $(this).html(replaceContent);
    });
});

我认为你在页面的头部使用了这个jquery代码。请在</body>标记之前的页面末尾使用此代码,然后它才能生效。

答案 5 :(得分:0)

你的html和javascript中有很多错误,但试试这个:

$(document).ready(function() {

    $('.ms-vb2', '.ms-listviewtable').each(function() {

        $(this).html("Changed Content");

    });
});