2

我们当前的购物车不允许我们通过他们的软件将某些州排除在免费送货之外,所以我正在尝试编写一个脚本来在进入某个状态时删除免费送货部分。

我已经研究了几个小时,似乎无法在网上或通过测试的任何地方找到答案。任何能给我指明正确方向的人都是我的英雄。我对 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>列表中有它就会被删除。

从我一直在做的所有研究来看,我的代码似乎是正确的,但它不起作用。这是小提琴

4

3 回答 3

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();
}
于 2013-07-22T19:46:39.560 回答
5

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

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

小提琴

编辑:

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

于 2013-07-22T19:45:14.753 回答
1

这个对我有用:

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

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

于 2013-07-22T19:48:43.347 回答