如何修改文本块中的内容

时间:2015-07-17 22:26:49

标签: javascript jquery css sharepoint-2013

我有一些看起来像这样的HTML:

<td class="targetTD">
  <a href="http://foo.com">
    <span>content</span>
  </a>
  **Text I want to modify**
  <span>more content</span>
</td>

targetTD根据正在呈现的内容迭代动态次数。对于每次迭代,我需要删除&#34;:&#34;的子字符串。从文本块中的代码开始。不幸的是,它没有自己的元素,我没有能力将它包装在一个干净整洁的id / class中。我做了一些搜索,发现了一些我认为可以解决的问题:

<script>
var myString = $('.targetTD').html();
myString = myString.replace(': ','');
$('.targetTD').html(myString);
</script>

但这会导致控制台错误:

  

无法获得财产&替换&#39;未定义或空引用。

最终更新(解决方案)

感谢@Vaibhav提出解决方案!这个脚本起到了作用:

<script type="text/javascript">

    $(function() {
        $('.targetTD').each(function () {
            $(this).html($(this).html().replace(/\:\s/g, ''));
        });
    });

</script>

更新1

感谢@BenM,我能够通过使用以下代码来阻止生成错误:

<script>
$(function() {
    $('.targetTD').html(function() { $(this).html().replace(': ', ''); });
});
</script>

虽然我现在没有收到错误消息,但仍然没有删除&#34;:&#34;从文本块。关于为什么会出现这种情况的任何想法?

更新2

为了回应@ElvisLikeBear的评论,广泛提供一些SharePoint细节:

  • 我想要完成的具体任务是从分组列表中隐藏列名。在SP2010中,通过隐藏ms-gb类很容易做到这一点。在2013年,微软已经将这个类集中在扩展/折叠按钮中,因此不能选择隐藏它。我已经成功地使用列名隐藏了跨度(在上面的代码中,包含在a中的跨度),但&#34;:&#34;在文本块中仍然无用,现在它只是浮动在每个类别名称的开头。

  • 使用脚本编辑器Web部件将代码作为代码段部署在页面级别。

3 个答案:

答案 0 :(得分:1)

Brendan,您的代码问题是您正在替换&#39;:&#39;与&#39;&#39;但是你没有再把它分配到同一个td。

Replace(':','')功能仅替换第一次出现&#39;:#39;。请按照我的代码。它将取代所有的&#39;:&#39;用&#39;&#39;。

参考来自&#34; targetTD根据正在呈现的内容迭代动态次数&#34;

我假设您需要 foreach循环来迭代所有Tds。

Html: -

<table>
    <tr>
        <td class="targetTD">
            <a href="http://foo.com">
                <span>content</span>
            </a>
            Test:Test1
            <span>more content</span>
        </td>
    </tr>
    <tr>
        <td class="targetTD">
            <a href="http://foo.com">
                <span>content</span>
            </a>
            Test:Test1:test2
            <span>more content</span>
        </td>
    </tr>
    <tr>
        <td class="targetTD">
            <a href="http://foo.com">
                <span>content</span>
            </a>
            Test:Test1:test3:test4
            <span>more content</span>
        </td>
    </tr>
</table>

Jquery: -

<script type="text/javascript">

    $(function() {
        $('.targetTD').each(function () {
            $(this).html($(this).html().replace(/\:/g, ''));
        });
    });
    </script>

脚本已经过测试并且运行正常。

答案 1 :(得分:0)

确保DOM准备就绪:

<script>
$(function() {
    $('.targetTD').html(function() { $(this).html().replace(': ', ''); });
});
</script>

答案 2 :(得分:0)

您的标记表明这是在SharePoint网站上执行的,这就是您的代码无法解雇的原因。您需要为SharePoint正确部署它。

您可以在解决方案或功能中执行此操作,或者如果它是一个页面脚本您应该使用脚本Web部件(在SharePoint 2010和2007中称为内容编辑器webpart),您还可以添加代码段到SharePoint 2013中的页面。

您还可以通过SharePoint designer将脚本添加到标记中,但我不认为这是最佳做法,除非在某些特定情况下(但对于非SharePoint Devleoper而言,这将是最简单的方法)。