只有当所有事情都成立时才删除元素

时间:2013-07-22 19:40:24

标签: jquery

我们当前的购物车不允许我们通过他们的软件将某些州排除在免费送货之外,因此我尝试编写脚本以在输入特定州时删除免费送货部分。

我已经在这里工作了几个小时,似乎无法在网上或通过测试找到答案。任何可以指向我正确方向的人都是我的英雄。我是jQuery,JavaScript之类的新手,所以如果这是一个愚蠢的简单问题,请原谅我。

<div>
<div>HONOLULU, <span id="state">OK</span> 96819</div>
<ul>
    <li>$0.00 - Free Shipping</li>
    <li>$16.39 - UPS Ground</li>
    <li>$21.50 - UPS 2nd Day Air®</li>
    <li>$36.39 - UPS Next Day Air®</li>
    <li>$0.77 - First Class Mail</li>
    <li>$6.26 - Priority Mail</li>
</ul>

$(document).ready(function () {

if ($('#state:contains("HI" || "AK")')); {
    $('li:contains("$0.00")').remove();

} });

当您将<li>$0.00 - Free Shipping</li>更改为任何其他号码时,它会显示在列表中,但无论我在<span id="state">中的状态如何,如果列表中有<li>$0.00 - Free Shipping</li>它被删除了。

从我所做的所有研究中,我的代码似乎正确,但它不起作用。 Here's the Fiddle

3 个答案:

答案 0 :(得分:5)

:contains("HI" || "AK")匹配确切的字符串"HI" || "AK",没有OR。

if ( $('#state:contains(HI)').length || $('#state:contains(AK)').length)  {
    $('li:contains("$0.00")').remove();
}

FIDDLE

修改

正如@David在下面的评论中指出的,要检查一个元素是否存在,你必须检查长度。

答案 1 :(得分:5)

您的代码存在一些问题。首先,丢失;声明中的if

应该是:

if(condition){
    // code
}

其次,你不能那样使用||。你需要这样做:

$('#state:contains("HI"),#state:contains("AK")')

最后,做if($jQueryObject)不是你想要的。这将永远是真的。您想查看.length

所以,它应该是这样的:

if ($('#state:contains("HI"),#state:contains("AK")').length) {
    $('li:contains("$0.00")').remove();
}

答案 2 :(得分:1)

这个对我有用:

if ($('#state').text()=='HI' || $('#state').text()=='AK') {
        $('li:contains("$0.00")').remove();
}

http://jsfiddle.net/9Kpyy/2/