2016-04-15 16 views
1

Ich möchte überprüfen, ob der Text vorhanden ist und es entfernen. Ich muss herausfinden, ob der Text vorhanden ist und die übergeordneten Elemente entfernen. Wenn zum Beispiel die die Mit Namen + Datum existieren dann entfernen:Ersetzen Sie das Textproblem in Javascript

<dt>Font</dt> 
<dd>Arial </dd> 

Ein weiteres Beispiel, wenn die Mit Namen + Datum + Uhrzeit existieren dann entfernen:

<dt>Font</dt> 
<dd>Comic Sans </dd> 

Mein Code:

Mein Problem ist, weil mit Name in allen existieren und mein Javascript gilt für alle. Wie kann ich das Javascript so genau suchen?

+0

Mögliche Duplikat [jQuery \ machen ': contains() \' nur exakte Zeichenfolge wählen] (http://stackoverflow.com/questions/15364298/make-jquerys-contains-select -only-exact-string) – Phiter

Antwort

1

Sie können die filter-Funktion von jQuery verwenden. Der Selektor contains versucht nicht, eine exakte Übereinstimmung zu erhalten, sondern, wie der Name sagt, eine Zeichenfolge, die den gewünschten Text enthält.

jQuery(document).ready(function() { 
 
    if (jQuery('.item-options dd').filter(function() { 
 
    return jQuery(this).text() === "With Name"; 
 
    }).length > 0) 
 
    { 
 
    var parent = jQuery('.item-options dd:contains("With Name")').parent('dl'); 
 
    jQuery(parent).find('dt:contains("Font")').html('');  
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<dl class="item-options"> 
 
    <dt>Radio test</dt> 
 
    <dd>With Name </dd> 
 
    <dt>Font</dt> 
 
    <dd>no font selected </dd> 
 
</dl> 
 
<dl class="item-options"> 
 
    <dt>Radio test</dt> 
 
    <dd>With Name + Date</dd> 
 
    <dt>Font</dt> 
 
    <dd>Arial </dd> 
 
</dl> 
 
<dl class="item-options"> 
 
    <dt>Radio test</dt> 
 
    <dd>With Name + Date + Time</dd> 
 
    <dt>Font</dt> 
 
    <dd>Comic Sans </dd> 
 
</dl>

sieht hässlich aus, aber funktioniert.

Source

+0

Hallo phiter, vielen Dank, aber ich weiß nicht, warum der Code nicht funktioniert. – Robert

+0

Hallo Phiter Fernandes können Sie sagen, was mit diesem Code falsch ist und warum Schriftarttext nicht entfernt wird? Ich probiere es auch auf meiner Seite und bin genauso wie hier. Wenn Sie auf Code-Snippet drücken drücken, sehen Sie, dass die Schriftart immer noch da ist. Danke – Robert

+0

Ich werde es mir anschauen. – Phiter

0

, wenn Sie die HTML-Architektur kennen oder anderweitig zu entfernen, was Sie want.i diese Ihnen helfen, hoffentlich.

$(document).ready(function() { 
if ($('.item-options dd:contains("With Name")').length > 0) 
    { 
    var parent = $('.item-options'); 
    var children = $('.item-options').find("dd"); 
    $(children).each(function(i,e){ 
    if(~$(e).text().indexOf("With Name + Date + Time")){ 
    $(e).nextAll().remove(); 
    } 
    else if(~$(e).text().indexOf("With Name + Date")){ 
    $(e).nextAll().remove(); 
    } 
    }); 

} 
}); 

https://jsfiddle.net/atg5m6ym/3270/

+0

Hallo vielen Dank für Ihre Antwort, aber was passiert, wenn der With Name nicht existiert und nur mit Name + Datum + Zeit? Ich versuche und wenn With Name nicht vorhanden ist, entferne das Skript alles entfernen, die mit Name enthalten – Robert

+0

Hallo, kannst du mir sagen wie ich nur den Text Font entfernen kann? in deinem Code? stattdessen $ (e) .nextAll(). remove(); Ich muss nur den Text Font entfernen – Robert