2017-01-25 6 views
0

문제JQuery와 숨기기 특정 텍스트는

나는 td 요소에 특정 문자열을 hinde해야합니다. 하지만이 td 요소에는 다른 태그가 포함되어 있으므로이 태그를 삭제할 수는 없습니다. 내가 시도 이것이 td 요소

먼저 <a> 요소에 $("#idHomePageNewItem").hide();를 사용하는 것이

<td class="ms-list-addnew ms-textLarge ms-soften"> 
<a title="Saate sellesse loendisse või teeki lisada uue üksuse." class="ms-heroCommandLink" id="idHomePageNewItem" style="display: none;" onclick='NewItem2(event, "http://infoportaal2/_layouts/15/listform.aspx?PageType=8&amp;ListId=%7BF4433171%2D98D5%2D414B%2D914F%2DAFD9A44BF869%7D&amp;RootFolder="); return false;' href="http://infoportaal2/_layouts/15/listform.aspx?PageType=8&amp;ListId=%7BF4433171%2D98D5%2D414B%2D914F%2DAFD9A44BF869%7D&amp;RootFolder=" target="_self" data-viewctr="9"> 
<span class="ms-list-addnew-imgSpan16"> 
<img class="ms-list-addnew-img16" id="idHomePageNewItem-img" src="/_themes/42/spcommon-B35BB0A9.themedpng?ctag=44"></span> 
<span>uus üksus</span> 
</a> või selle loendi 
<a title="Saate seda loendit redigeerida kiirredigeerimisrežiimis." class="ms-heroCommandLink" onclick="EnsureScriptParams('inplview', 'InitGridFromView', '{32FA9EC5-6444-4ECC-9300-1D82D2AEB5F7}'); return false;" href="javascript:;">andmete sisestamine</a> 
</td> 

enter image description here

enter image description here

참고

내가 사용하는 시도다음 내용 :

$("td:contains('või selle loendi')").text().replace('või selle loendi', ''); 

$("span:contains('või selle loendi')").text().replace('või selle loendi', ''); 

$('div.text').text(function (i, t) { 
    return t.replace('või selle loendi', ''); 
}) 

및 기타 유사한 유사 콘텐츠 필자는 태그의 전체 내용을 삭제할 수 있었고 (제 경우에는 작동하지 않을 것입니다) 많은 일이 일어나지 않았습니다.

답변

0

indexOf를 사용해 보셨습니까?

if (td.html().indexOf("your string")>-1) { 
    td.html(td.html().replace("your string","")); 
} 
+0

이것은 작동하지 않습니다. 내가 이해하는 것처럼, 이드는'var td = $ ("td : contains ('või selle loendi')"); – Taurib

+0

'td'는 어떤 종류의'var td = $ ("td")'이어야합니다. –

0

DOM에서 텍스트 콘텐츠는 텍스트 노드로 존재합니다. 이들은 요소 노드의 자손입니다. 귀하의 문제는 jQuery가 텍스트 노드를 조작하기에 적합하지 않다는 것입니다. 실제로 요소를 기반으로합니다. 이 ES6 코드

let parent = document.querySelector('.ms-list-addnew'); 
// get all child nodes -- including text nodes 
let childNodes = parent.childNodes; 
// reduce array to contain only text nodes 
let textNodes = Array.from(childNodes).filter(node => node.nodeType === Node.TEXT_NODE); 
for (let node of textNodes) { 
    node.nodeValue = node.nodeValue.replace('või selle loendi', ''); 
} 

하는 것으로 당신은 오래된 브라우저를 transpile해야 할 수도 있습니다

내보기에, 쉽게 네이티브 DOM 기능의 측면에서이 처리하는 것입니다.

jQuery를에서도이 작업을 수행 할 수 있습니다 : 요소의 전체 HTML이나 텍스트 컨텐츠를 대체 할 매우 나쁜 생각입니다

$('.ms-list-addnew') 
    .contents() 
    .filter(function(idx, node) { 
    return node.nodeType === Node.TEXT_NODE; 
    }) 
    .each(function(idx, el) { 
    el.nodeValue = el.nodeValue.replace('või selle loendi', ''); 
    }); 

하는 것으로. 후자는 다른 모든 요소를 ​​없애고 텍스트 만 유지하지만 전자는 기존의 모든 이벤트 처리기 및 요소와 관련된 기타 데이터를 제거하지만 HTML로 렌더링되지는 않습니다.