如果在span中显示了特定文本,隐藏div

5
我正在尝试在一个 span 显示特定文本时隐藏一个 div。我正在使用 jQuery,这是代码:
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"});
}

});

它可以在点击时隐藏div,但它忽略了if语句。所以即使span中的文本是“cat”,它仍然会隐藏div。有人能发现我做错了什么吗? 此外,由于#cartCoupon按钮具有onclick事件dicountForm.submit(false);,因此deliveryUpsellText在单击时被隐藏,但它没有绑定到表单提交,因此一旦表单已提交,它就会再次显示。有人知道我怎样才能解决这个问题吗?
2个回答

1

jQuery集合始终为真值(因为它是一个对象)。你需要检查它是否包含节点(选择了某些内容)。使用length属性进行检查:

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

或者 $j('.deliveryUpsellText').toggle(!$j(".error-msg span:contains('blabla')").length) - Rayon
对我来说并不太适用,因为有其他原因,但我会接受它作为答案,因为一般情况下它会起作用。 - MariaL

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

});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接