2014-09-05 21 views
0

现在我有一个jQuery脚本,看看.shipping是否有一个带有.sp-methods类的后代,如果它是真的,它将向下滚动到页面的底部。jQuery如果一个语句为真,另一个不是?

当前工作的jQuery

if ($('.shipping .sp-methods').length > 0) { 
     $('.shipping').show(); 
    $('html, body').animate({ 
     scrollTop: $(document).height() - $(window).height() 
    }, 
    1400, 
     "easeOutQuint"); 
} 

虽然我要的是脚本只有当,如果这是真的,并用一个ID#购物推车的元素不包含文本“运输”运行在它或它的任何后代。只是像这样的航运,而不是航运作为一个类或任何东西里面的文字。可以包含这个吗?

我没有运气

破碎的jQuery

if ($('.shipping .sp-methods').length > 0 && ! $("#shopping-cart:contains('shipping')")) { 
    $('.shipping').show(); 
    $('html, body').animate({ 
     scrollTop: $(document).height() - $(window).height() 
    }, 
    1400, 
     "easeOutQuint"); 
} 
+0

由于某种原因,当我这样做时,无论元素是否在其内部的某处“运输”,它都会滚动到页面的底部。 – Xander 2014-09-05 16:44:27

回答

1

尝试这个你应该让第二个条件按照你的第一的格局。 因此,请尝试检查第二个的长度:

编辑:看起来你也错过了一个单引号'shipping',更新了插入它的答案。

if ($('.shipping .sp-methods').length > 0 && $("#shopping-cart:contains('shipping')").length <= 0) { 
    $('.shipping').show(); 
    $('html, body').animate({ 
     scrollTop: $(document).height() - $(window).height() 
    }, 
    1400, 
     "easeOutQuint"); 
} 
+0

我意识到if语句的第一行没有关于'shipping'的结尾引号,但是使用上面的代码和'fixed(my bad)',它会滚动到底部,即使元素包含文本传送在某处。 – Xander 2014-09-05 16:46:33

+0

@Xander然后通过在if语句内输出数组'$(“#shopping-cart:contains('shipping')”)'进行调试。看看为什么这种情况不会触发。 – kingdamian42 2014-09-05 16:50:16

+0

这个解决方案一旦我想出了一些东西......我是个大人物,#购物车中包含'Shipping'而不是'shipping'。 D'哦!抱歉! – Xander 2014-09-05 17:04:42

0

这是因为$("somethingNonExistent")[](空数组)。你需要检查它的长度,以便知道你的选择器搜索是否成功。

相关问题