jQuery:包含选择器总是触发?

时间:2015-02-02 15:38:28

标签: javascript jquery

我正在尝试找出以下代码的错误,将其输出到具有特定模板的所有页面。

当我导航到/ auth / remind时,它会正确地重定向到/ forgot /。当它进入/ auth / check /它重定向到/忘记/成功/正确。但是,如果我转到/,它会自动选择/?status = 1,.valign <p>元素是否包含“#1”,“#2”或者没有。

任何想法是什么问题?谢谢!

<script type="text/javascript">
if (window.location.pathname=="/") {
    if ($('.valign:contains("#1")')) {
       window.location.replace('https://website.com/?status=1');
    } else if ($('.valign:contains("#2")')) {
       window.location.replace('https://website.com/?status=2');
    } else {
       window.location.replace('https://website.com/');
    }
} else if (window.location.pathname.substring(0, 12) == "/auth/remind") {
    window.location.replace('https://website.com/forgot');
} else if (window.location.pathname.substring(0, 11) == "/auth/check") {
    window.location.replace('https://website.com/forgot/success');
} 
</script>

1 个答案:

答案 0 :(得分:3)

对象$('.valign:contains("#1")')是一个jQuery实例,它始终是值得的。这意味着,即使'.valign:contains("#1")'选择器没有产生任何结果,$('.valign:contains("#1")')仍将是&#34; true&#34;。

检查选择器是否与某些元素匹配的正确方法是使用返回对象的length属性:

if ($('.valign:contains("#1")').length) {
    // ...
}