2016-06-29 116 views
1

如何使用jQuery在頁面加載事件中刪除動態生成的文本?
我試過谷歌,但沒有發現有用。其實我正在使用第三方JS庫,它在我需要刪除的HTML頁面上插入一些文本。JQuery - 在頁面加載時刪除動態內容?

我試過這段代碼,但它刪除了已經在html頁面中的不是動態文本的常量文本。

$('div:contains("Powered by")').remove(); 

編輯:

下面是完整的代碼。

<!DOCTYPE html> 
    <html> 
    <head> 
    <script src="js/jquery-2.1.4.min.js"></script> 
    </head> 
    <body> 
    <div id="translate"> 
    <div id="google_translate_element"></div><script type="text/javascript"> 
    function googleTranslateElementInit() { 
    new google.translate.TranslateElement({pageLanguage: 'en',includedLanguages: 'en,es,fr,it'}, 'google_translate_element'); 
} 
    </script><script type="text/javascript" src="//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script> 
    </div> 
    </body> 
    </html> 

注:谷歌翻譯增加了選擇框,我需要,但增加了一些文本「技術」在它下面,我想刪除。雖然,可以用css隱藏文本,但我想用jQuery刪除它。

+0

您可以創建小提琴。這樣我們可以檢查。 –

+0

也許你應該把這段代碼放到一個區間內,例如: var interval_of_function = setInterval(function(){$('div:contains(「Powered by」)')。remove();},100); – esertbas

+0

它是這個問題的最佳解決方案嗎?我認爲不是因爲它可能有更多的資源。 @esertbas –

回答

0

在頁面加載事件或window它不會工作,因爲你的DOM還沒有準備好加載事件,意味着div文本Powered by是不存在的,而你是code之前執行,你必須把你的代碼DOM就緒功能,該功能位於生成該Powered By的那條線的下方。

注意檢查brsower控制檯errors如果沒有那麼它會工作

LIKE

$(document).ready(function(){ 
 
$("div:contains('Powered By')").remove(); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<div>Powered By</div>

然後它會奏效。

+0

我已經把這個代碼放在DOM中,但它不工作。 –

+0

圍繞'Powered By'使用單引號,同時檢查代碼段, 您可能檢查您的瀏覽器控制檯是否有錯誤,可能有錯誤。 –

+0

再次檢查我的問題。它是關於動態生成的文本,而不是頁面上已有的靜態文本。 –

1

UPDATE

另一種解決方案是:

$(window).on('load', function(e) { 
    $('div.skiptranslate.goog-te-gadget').hide(); 
}); 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 


<div id="translate"> 
    <div id="google_translate_element">This is a simple snippet</div> 
    <script type="text/javascript"> 
    function googleTranslateElementInit() { 
     new google.translate.TranslateElement({pageLanguage: 'en',includedLanguages: 'en,es,fr,it'}, 'google_translate_element'); 
    } 
</script> 
<script type="text/javascript" src="//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script> 

老回答

您可以使用DOMNodeInserted mutation event檢查下你的div存在一個文本你正在尋找:

$(document).on('DOMNodeInserted', 'div:contains("Powered By")', function(e) { 
 
    console.log('element div conatining "Powered By" removed!'); 
 
    $(this).remove(); 
 
}); 
 
$(function() { 
 
    $('#addText').on('click', function(e) { 
 
    $('div').append('Powered By'); 
 
    }); 
 
    $('#addDiv').on('click', function(e) { 
 
    $('body').before('<div>..................</div>'); 
 
    }); 
 
});
<script src="https://code.jquery.com/jquery-2.1.1.min.js"></script> 
 

 
<div>Powered By</div> 
 
<div>Powered By</div> 
 
<div>Powered By</div> 
 
<button id="addText">Add text</button> 
 
<button id="addDiv">Add div</button>

+0

像一個魅力工作。函數(){$(document).on('DOMNodeInserted','div:contains(「Powered By」)',函數(e){ console.log('element div conatining「Powered By」removed!「); $(this).remove(); });}); –

+0

您的更新代碼也隱藏了選擇框。 –