2016-04-16 8 views
0

Wie kann ich Text in Javascript nur suchen, wenn die Übereinstimmung perfekt ist. Zum Beispiel habe ich diese Struktur:Exacly Suche in 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> 

Zum Beispiel habe ich, wenn der Text item Name überprüfen möchten auf der Seite existiert dann, wenn der item Name Text zugehörigen Kinder entfernen existieren. So zum ersten item Namen Ich brauche nur die Farbe zu entfernen:

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

Dann, wenn item Namen Blau Text existiert ich dazugehörige Kinder

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

und wenn die dritten entfernen muß item Name Purple Text vorhanden, dann entfernen zugehörige Kinder:

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

Ich erstelle dieses Skript, aber zum Beispiel wird der Name Farbe überall gelöscht. Auch wenn in der Artikel Name oder in Artikel Name Lila muss dort bleiben. Ich denke, das Problem ist, dass das erste Produkt den Name item Namen und im zweiten Produkt ist der Name mit item NamenLila starten.

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

Antwort

1

Ich bin nicht ganz sicher, was Sie fordern, aber ich hoffe, das hilft.

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

danke, ich verstehe nicht, was ist dieser Code, aber wenn Sie wieder meinen Beitrag lesen, gibt es 3 Artikel: Artikel Name, Artikel Name Blau und Artikel Name Lila, wie kann ich diesen Namen identifizieren und wenn es existiert etwas tun – Robert

0

die removeAdditionalInfo() Funktion unten und:

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

die zusätzlichen Infos Stück entfernen.

+0

Thasn Sie so sehr, können Sie den Code für meine Antwort anpassen, ich bin nicht so gut in Javascript – Robert

+0

Ich * denke * der Code, den ich Ihnen gegeben habe tut, was Sie suchen zu tun. Entweder das oder ich habe nicht verstanden, was Sie versuchen zu tun. Hast Du es versucht? – JonSG

+0

hier ist ein fiffle; https://jsfiddle.net/r38tpht0/1/ – JonSG

Verwandte Themen