2015-02-02 3 views
1

Я пытаюсь выяснить, что не так в следующем коде, он выводится на все страницы с определенным шаблоном.jQuery: содержит селектор, всегда запускающий?

Когда я перехожу к/auth/remind, он правильно перенаправляет/забыл /. Когда он переходит в/auth/check /, он перенаправляет/забывает/успешно/правильно. Однако, если я goto /, он автоматически выбирает /? 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> 

ответ

3

Объект $('.valign:contains("#1")') является экземпляром JQuery, который всегда truthy значение. Это означает, что даже если селектор '.valign:contains("#1")' не дает никакого результата, $('.valign:contains("#1")') по-прежнему будет «истинным».

Правильный способ проверить, если селектор соответствует некоторым элементам, чтобы использовать length свойства возвращенного объекта:

if ($('.valign:contains("#1")').length) { 
    // ... 
} 
Смежные вопросы