2016-04-15 66 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>

相貌醜陋,但工程。

Source

+0

嗨phiter非常感謝你,但我不知道爲什麼代碼不工作。 – Robert

+0

嗨Phiter Fernandes你能告訴這個代碼有什麼問題,爲什麼字體文本不會被刪除?我也在我的頁面中嘗試它,並且與此處相同,如果按下運行代碼片段,您將看到字體仍然存在。謝謝 – Robert

+0

我會看看它。 – Phiter

0

,如果你知道的HTML結構或移除任何你want.i希望這會幫助你。

$(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();我只需要刪除文本字體 – Robert