2016-08-22 4 views
4

Ich versuche, ein a div zu verbergen, wenn ein bestimmter Text in einem Bereich angezeigt wird. Ich bin mit jquery und dies ist der Code:hide div, wenn bestimmter Text in span angezeigt wird

HTML

<div class=“deliveryUpsellText”> 
<p>blabla</p> 
</div> 


<ul> 
    <li class=“error-msg”> 
    <ul> 
    <li> 
    <span> Coupon Code “blabla” is not valid 
    </span> 
    </li> 
    </ul> 
    </li> 
</ul> 


<button type="button" id="cartCoupon" title="Apply Coupon" class="button applycouponhide" onclick="discountForm.submit(false) ; " value="Apply Coupon"><span style="background:none;"><span style="background:none;">Apply</span></span></button> 

jQuery

$j('#cartCoupon').click(function(){ 
if($j(".error-msg span:contains('blabla')")){ 
    $j('.deliveryUpsellText').css({"display":"none"}); 
} 

}); 

Es die div auf Klick versteckt, aber es ignoriert die if-Anweisung. Also auch wenn der Text in der Spanne "Katze" war, verbirgt es immer noch das div. Kann jemand erkennen, was ich falsch gemacht habe? Auch die #cartCoupon Schaltfläche hat das onclick-Ereignis dicountForm.submit(false);. DeliveryUpsellText wird beim Klicken ausgeblendet, ist aber nicht an das Formular "submit" gebunden, sodass es nach dem Senden des Formulars erneut angezeigt wird. Weiß jemand wie ich das beheben kann?

Antwort

1

jQuery-Sammlung ist immer truthy (weil es ein Objekt ist). Sie müssen prüfen, ob es Knoten enthält (etwas ausgewählt). Verwenden Sie length Eigenschaft für diese:

if ($j(".error-msg span:contains('blabla')").length) { 
    $j('.deliveryUpsellText').css({ 
     "display": "none" 
    }); 
} 
+0

oder '$ j ('deliveryUpsellText.') hin- und herzuschalten ($ j (.! "error-msg Spanne. enthält ('blabla')"). Länge) ' – Rayon

+0

Funktioniert für mich aus einem anderen Grund nicht ganz, aber ich werde es als Antwort akzeptieren, weil es im Allgemeinen so funktionieren würde – MariaL

0

Bitte versuchen Sie dieses

$(document).ready(function() { 
    $("#cartCoupon").click(function() { 
     var errMsg = $(".error-msg ul li span").text(); 
     if (errMsg.search("blabla") >= 0) { 
      $(".deliveryUpsellText").hide(); 
     } 
    }); 

}); 
0

Ich glaube, Sie wurden für diese Abfrage suchen. sein ist für mich Arbeit

$(function(){ 
 
\t 
 
\t $('#cartCoupon').on('click', function(){ 
 
\t \t $('.error-msg').find('span').each(function(){ 
 
\t \t \t var text = $(this).text(); 
 
\t \t \t if(text.indexOf('blabla') >=0){ 
 
\t \t \t \t $(this).hide(); 
 
\t \t \t } 
 
\t \t }); 
 
\t }) 
 
});
<ul> 
 
    <li class="error-msg"> 
 
    <ul> 
 
    <li> 
 
    <span> Coupon Code “blabla” is not valid </span><br> 
 
    <span> Coupon Code is not valid </span><br> 
 
    <span> Coupon Code is not valid </span> 
 
    </li> 
 
    </ul> 
 
    </li> 
 
</ul> 
 
<button type="button" id="cartCoupon" title="Apply Coupon" class="button applycouponhide" value="Apply Coupon"><span style="background:none;"><span style="background:none;">Apply</span></span></button>