删除锚点标记之间的文本,并删除第二个<a> with jquery?</a>

时间:2015-01-07 17:10:22

标签: javascript jquery

我有生成的SharePoint页面。现在我试图从下面的文本中删除文本和第二个锚标记。

需要删除:文字为or(位于锚标记之间)并删除第二个锚点或锚文本。

<table id="Hero-WPQ2" dir="none" cellpadding="0" cellspacing="0" border="0">
   <tbody>
       <tr>
          <td class="ms-list-addnew ms-textXLarge ms-list-addnew-aligntop ms-soften">
               <a id="idHomePageNewItem" class="ms-heroCommandLink" href="http://spfoundation/d" data-viewctr="5" onclick="NewItem2(event, &quot;http://spfoundation/d&quot;); return false;" target="_self" title="Add a new item to this list or library.">
               <span class="ms-list-addnew-imgSpan20">
               <img id="idHomePageNewItem-img" src="/dept/it/" class="ms-list-addnew-img20">
               </span>
                <span>new item</span>
                </a>

                 or 
                <a class="ms-heroCommandLink" href="javascript:;" onclick="EnsureScriptParams('inplview', 'InitGridFromView', '{23AB37B1-38E9-460B-BE87-FCAF204DAD20}'); return false;" title="Edit this list using Quick Edit mode.">edit</a>
                 this list
             </td>
        </tr>
     </tbody>

我们如何用jquery做到这一点?我尝试了$("td[class=ms-list-addnew*] a:nth-child(2)").text("");。但没效果。

更新

想要删除

or 
   <a class="ms-heroCommandLink" href="javascript:;" onclick="EnsureScriptParams('inplview', 'InitGridFromView', '{23AB37B1-38E9-460B-BE87-FCAF204DAD20}'); return false;" title="Edit this list using Quick Edit mode.">edit</a>

4 个答案:

答案 0 :(得分:1)

正如评论中提到的那样。您需要使用contents过滤掉textNodes

http://jsfiddle.net/evilbuck/hh1598gk/

$('.ms-list-addnew a:nth-of-type(2)').remove();
$('.ms-list-addnew').contents().filter(function() {
    return this.nodeType === 3;
}).eq(1).remove();

答案 1 :(得分:0)

对于jQuery,您需要使用contents()来访问DOM元素中的原始文本节点。然后,您可以检查nodeType以匹配文本节点(3 =文本节点:http://www.w3schools.com/dom/dom_nodetype.asp

传递给filter的索引可以识别特定元素:

JSFiddle: http://jsfiddle.net/TrueBlueAussie/53w8o35f/1/

$('td[class^="ms-list-addnew"]').contents().filter(function(i) {
        return this.nodeType === 3 && i == 2;     // Node.TEXT_NODE
   }).remove();
$('td[class^="ms-list-addnew"] a:last').remove();

请相应调整以删除HTML中的任何组件。这只是我对你想要的东西的最佳猜测。

更简单的选项:(保留您想要的位数)

另一种选择是简单地匹配您要保留的内容,并在html(itemsIWantToKeep)上使用td。您可以向html()提供一个函数,以便每个函数的内容仅应用于自身。

e.g。 http://jsfiddle.net/TrueBlueAussie/53w8o35f/2/

$('td[class^="ms-list-addnew"]').html(function(){
    // Keep the first child of each td
    return $(this).children().first();    
});

答案 2 :(得分:0)

这个怎么样?

$('table td').html($('table td :first-child'))

答案 3 :(得分:-1)

试试这个:

$($("td[class=ms-list-addnew*] a")[2]).prev().text("")
$($("td[class=ms-list-addnew*] a")[2]).text("")