если выписать вопрос, как найти элемент в теле? - PullRequest
0 голосов
/ 22 сентября 2009

Я пытаюсь написать простой оператор if в javascript (библиотека jquery), который просто находит элемент div.video на странице и, если он может его найти, задает для переменной 'стрелки' значение true, если не может ложь.

Вот что у меня есть:

jQuery(document).ready(function () {
    // Hiding of prev & next arrows on movie pages.
    var arrows = false;

    if (jQuery('body').find('div.video'))
    {
        arrows = false;
    } else {
        arrows = true;
    }

    if (
        arrows == true
    ){
        jQuery('a.prev').show();
        jQuery('a.next').show();
    } else {
        jQuery('a.prev').hide();
        jQuery('a.next').hide();
    }

});

Страница, на которой я ее использую, находится в стадии разработки, но вот ссылки на dev: Первая - это образец страницы с элементом div.video, поэтому стрелки должны быть скрыты:

страница видеоэлемента

Эта вторая ссылка не включает элемент div.video, вместо этого он имеет элемент div.photo. Поскольку div.video отсутствует на странице, здесь должны отображаться стрелки.

страница элемента фото

Странно, операторы if скрывают стрелки, но это происходит на всех страницах, а не только на страницах с видеоконтентом.

Любая помощь будет принята с благодарностью, поскольку Firebug, похоже, не регистрирует никаких ошибок в моем js.

Ответы [ 2 ]

2 голосов
/ 22 сентября 2009

jQuery возвращает пустой список, когда не может найти никаких элементов, поэтому ваше утверждение всегда оказывается верным.

Попытка:

if(jQuery("div.video").length > 0){
  arrows = false;
} ....
1 голос
/ 22 сентября 2009

Функция size() может помочь вам измерить количество элементов, соответствующих селектору. Кроме того, нет необходимости переносить элемент body для выбора его элементов.

Например:

$(document).ready
(
  function()
  {
    var arrows = $("div.video").size() === 0;
    if(arrows)
    {
      $("a.prev, a.next").show();
    }
    else
    {
      $("a.prev, a.next").hide();
    } 
  }
);
...