Оператор if-then в jQuery - PullRequest
       20

Оператор if-then в jQuery

1 голос
/ 07 ноября 2011

В настоящее время мне нужно проверить определенный тег привязки, чтобы увидеть, содержит ли он определенный текст.Если это так, то мне нужно, чтобы изменить текст другого элемента.Просто в качестве примера у меня есть следующий код.Однако, что бы я ни указывал в теге привязки, оно всегда выдает предупреждение «yup!».

if ($("a:contains('Level 2 (Admin Only)')")) {
    alert("yup!");
} 
else {
    alert("nope!");
}

Что я делаю не так?Должен ли я использовать другой метод выбора?

Ответы [ 3 ]

5 голосов
/ 07 ноября 2011

Вы должны проверить размер объекта jQuery.jQuery возвращает объект, состоящий из всех сопоставленных элементов.

 // If .length == zero, it evaluates to false in an if condition
if ($("a:contains('Level 2 (Admin Only)')").length) {
4 голосов
/ 07 ноября 2011

Это потому, что $("a:contains('Level 2 (Admin Only)')") равно всегда верно.

Попробуйте это:

if($("a:contains('Level 2 (Admin Only)')").length) {
   alert("yup!");
}else{
   alert("nope!");
}
2 голосов
/ 07 ноября 2011

Метод jQuery всегда возвращает объект независимо от того, соответствует селектор любым элементам или нет; и объекты всегда правдивые.

Вместо этого следует использовать атрибут .length, который будет правдивым , если элемент был сопоставлен, и ложным , если его не было.

if ($("a:contains('Level 2 (Admin Only)')").length) {
   alert("yup!");
}else{
   alert("nope!");
}
...