我有以下表结构:
<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);
});
});
任何建议都将不胜感激。
答案 0 :(得分:3)
我知道您要将文字附加到最后一个td。这是
的代码jQuery('.ms-lastCell').each(function() {
var lastColumn = $(this).html();
var replaceValue = lastColumn + "Changed Content";
jQuery(this).html(replaceValue );
});
答案 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() {
'
之后没有结束lastCell
。.ms-lastCell
元素后代的任何.ms-vb2
元素。如果您删除该空格并说'.ms-vb2.ms-lastCell'
,则会找到包含这两个类的元素。.each
(最后有一个l)。 .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");
});
});