2016-04-15 16 views
1

テキストが存在するかどうかを確認して削除します。テキストが存在するかどうかを調べ、親アイテムを削除する必要があります。たとえば、その後、存在名+日付でを削除する場合:JavaScriptのテキストの置き換え

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

を別の例名+日付+時刻を削除し、その後存在する場合:

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

マイコード:

jQuery(document).ready(function() { 
 
    if (jQuery('.item-options dd:contains("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>

私の問題は名前がであり、私のjavascriptがすべてに適用されるためです。どのように私はjavascriptを正確に検索することができますか?

+0

の可能性のある重複した[ 'jQueryの\を行います(含まれている)\'唯一の正確な文字列を選択](http://stackoverflow.com/questions/15364298/make-jquerys-contains-select -only-exact-string) – Phiter

答えて

1

jQueryのfilter関数を使用できます。 containsセレクタは完全一致を取得しようとはしませんが、名前のように、目的のテキストを含む文字列を取得します。

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>

醜いが、作品。あなたがhtmlのアーキテクチャを知っているか、そうでなければ、これはあなたを助けることを願っていますwant.i何でも削除する場合

Source

+0

こんにちは、私はあまりにもありがとう、ありがとう、しかし、私はなぜコードが動作しないのか分からない。 – Robert

+0

こんにちはPhiterフェルナンデスは、このコードの何が間違っているのか、なぜフォントテキストが削除されないのかを教えていただけますか?私は私のページでもそれを試してみましょう。ここでも同じですが、Run code snippetを押すと、Fontがまだそこにあることがわかります。ありがとうございます – Robert

+0

私はそれを見てみましょう。 – Phiter

0

$(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

お返事ありがとうございますが、氏名が存在せず、名前+日付+時刻のみがある場合はどうなりますか?私はしようと名前が存在しない場合は、スクリプトを削除する名前を含むすべてを削除する – Robert

+0

こんにちは、私はどのようにテキストのフォントを削除することができます教えてくれますか?あなたのコードで?代わりに、この$(e).nextAll()。remove();私はテキストだけを取り除く必要があるFont – Robert

関連する問題