【发布时间】:2011-08-23 17:00:34
【问题描述】:
我有一个表格,里面有一些内容。并非所有行都具有相同的内容,但其中一些行的第一句例如
你好,约翰你好吗?
你好,玛丽你好吗?
相同的模式具有不同的名称。
该行将如下所示。跨度中的内容来自数据库。是的,带有中断标签的文本也是如此。
<tr style="background-color:#F7F7f7">
<td>
<span id="sp1">Hello How Are you? John <br/><br/>Some text blalablalalbal <br/><br/>"You are Awesome" <br/><br/>----What can I do for you? <br/><br/></span><br />
<span id="sp2">XYZABCD</span><br />
<span id="sp3">12345669060 Some Loren ipsum</span><br />
</td>
</tr>
我想从具有 Hello, how are you xyzname? 的行中删除第一句话。
所以我有以下代码可以正常工作并执行我想要的操作:
<script type="text/javascript">
$(function () {
$("#btnCleanUp").click(function () {
$("table tr td").each(function () {
var elem = $(this).find('span:contains("Hello How Are you?")');
var alltxts = elem.contents().filter(function () {
var retm = true;
var str = this.nodeValue;
if (str != null) {
var bstr = str.indexOf("Hello How Are you?");
$(this).nodeValue = "";
if (bstr >= 0) {
retm = false;
}
}
var ret = (this.nodeType == 3) && retm;
return ret;
});
elem.text("");
elem.html("<br/>");
$(alltxts).each(function () {
var hm = $(this);
elem.html(elem.html() + hm[0].nodeValue + "<br/><br/>");
});
});
});
});
</script>
这里是示例demo。
问题:
我能以更好的方式做到这一点吗?
如果可能的话,我想简化上面的代码块,我的意思是逻辑上,因为我认为考虑到 jquery 的潜力,它可以以更好的方式完成。
如果这是更好的方法,我愿意在 C# 中执行此操作。请提供示例代码。
【问题讨论】:
-
考虑将其移至 (codereview.stackexchange.com)。
-
@maerics:正确,codereview 也是发布这个问题的地方,但我觉得这个地方仍然很重要。实际上我昨天本来打算发布这个问题以获得解决方案,但我发现这种奇怪的方式让我不满意。所以我把我的工作放在这里。我可以简单地删除我的代码并请求社区为我提供此问题的解决方案。
标签: c# javascript jquery regex dom