2016-04-16 7 views
0

JavaScriptが完全に一致する場合にのみ、どのようにテキストを検索できますか?例えば、私はこのような構造を持っている:javascriptで正しく検索する

<ul class="item-options"> 
    <li>First Item</li> 
    <li>item Name</li> 
    <li>product 1</li> 
    <li>Item Description</li> 
    <li>product description</li> 
    <li>Additional Info</li> 
    <li>Red</li> 
    <li>Color</li> 
    <li>Red</li> 
</ul> 

<ul class="item-options"> 
    <li>Second Item</li> 
    <li>item Name Blue</li> 
    <li>product 2</li> 
    <li>Item Description</li> 
    <li>product2 description</li> 
    <li>Additional Info</li> 
    <li>-----</li> 
    <li>Color</li> 
    <li>Blue</li> 
</ul> 

<ul class="item-options"> 
    <li>Third Item</li> 
    <li>item Name Purple</li> 
    <li>product 3</li> 
    <li>Item Description</li> 
    <li>-------</li> 
    <li>Additional Info</li> 
    <li>-----</li> 
    <li>Color</li> 
    <li>------</li> 
</ul> 

たとえば、私は、テキスト項目名かどうかを確認したい場合は、ページ内に存在する項目名テキストが関連付けられている子どもたちを削除存在します。 項目名ブルーテキストは私が関連付けられている子どもたち

<li>Additional Info</li> 
<li>-----</li> 

と第三場合を削除する必要が存在する場合は、

<li>Color</li> 
<li>Red</li> 

:だから最初項目名のために私は色のみを削除する必要がありますアイテム名紫テキストが存在し、関連付けられている子を削除します。

<li>Item Description</li> 
<li>-------</li> 
<li>Additional Info</li> 
<li>-----</li> 
<li>Color</li> 
<li>------</li> 

このスクリプトを作成しますが、たとえばという名前の色はどこからでも削除されます。 の商品名であっても、またはのアイテム名紫色のはそこに残る必要があります。私は最初の製品は、項目名名を持っていると第二製品に名前が項目名パープルで始まっているため、問題があると思います。

<script type="text/javascript"> 
    jQuery(document).ready(function() { 
     if (jQuery('.items-class li:contains("item Name")').length > 0) 
      { 
      var parent = jQuery('.items-class'); 
      var children = jQuery('.items-class').find("li"); 
      jQuery(children).each(function(i,e){ 
      if(~jQuery(e).text().indexOf("item Name Blue")){ 

       jQuery(parent).find('li:contains("Additional Info")').html(''); 
       jQuery(parent).find('li:contains("-----")').html(''); 
      } 
      if(~jQuery(e).text().indexOf("item Name Purple")){ 
       jQuery(parent).find('li:contains("Item Description")').html(''); 
       jQuery(parent).find('li:contains("-------")').html(''); 

       jQuery(parent).find('li:contains("Additional Info")').html(''); 
       jQuery(parent).find('li:contains("-----")').html(''); 

       jQuery(parent).find('li:contains("Color")').html(''); 
       jQuery(parent).find('li:contains("-----")').html(''); 
      } 
      else if(~jQuery(e).text().indexOf("item Name")){ 
       jQuery(parent).find('li:contains("Color")').html(''); 
       jQuery(parent).find('li:contains("Red")').html(''); 
      } 
      }); 
     } 
    }); 
</script> 

答えて

1

私はあなたが何を求めているのか正確には分かりませんが、これが役立つことを願っています。

function removeAdditionalInfo(searchCriteria){ 
    var interestingTagSelector = "ul.item-options > li"; 
    var additionInfoHeader = "Additional Info"; 
    var getFilter = function(criteria){ 
     return function(index, item){ return (item.innerHTML === criteria); }; 
    }; 

    // find the potentially interesting li tags 
    $(interestingTagSelector) 

     // filter out those that are not in fact interesting 
     .filter(getFilter(searchCriteria)) 

     // get siblings following an interesting li tag 
     .nextAll() 

     // ignore those not starting the additional info section 
     .filter(getFilter(additionInfoHeader)) 

     // get siblings following the AddInfo header 
     .nextAll() 

     // removed them 
     .remove(); 
} 

removeAdditionalInfo("item Name"); 
+0

ありがとうございます、このコードは何ですか、理解していませんが、私のポストをもう一度読むと3つのアイテムがあります:アイテム名、アイテム名青とアイテム名紫、何かをしなさい – Robert

0

以下とremoveAdditionalInfo()関数:

removeAdditionalInfo("item Name"); 
removeAdditionalInfo("item Name Blue"); 
removeAdditionalInfo("item Name Purple"); 

は、追加情報の項目を削除します。

+0

あまりにもThasnあなたは私の答えのためのコードを適応させることができます、私はjavascriptであまり良くありません – Robert

+0

私はあなたがしていることをあなたが与えたコードは*考える* *と思います。それか私はあなたがしようとしていることを理解していませんでした。それを試しましたか? – JonSG

+0

はこちらです。 https://jsfiddle.net/r38tpht0/1/ – JonSG

関連する問題