if语句问题,如何在body中查找元素?

时间:2009-09-21 21:16:57

标签: javascript jquery if-statement hide

我试图在javascript(jquery库)中编写一个简单的if语句,它只是在页面中找到div.video元素,如果它能找到它,则将变量'arrows'设置为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元素的示例页面,因此应隐藏箭头:

video element page

此第二个链接不包含div.video项,而是包含div.photo元素。由于div.video不在页面上,因此应在此处显示箭头。

photo element page

奇怪的是,if语句会隐藏箭头,但它会在所有页面上显示,而不仅仅是视频内容。

任何帮助都会非常感激,因为Firebug似乎没有在我的js中注册任何类型的错误。

2 个答案:

答案 0 :(得分:2)

当jQuery找不到任何元素时,它会返回一个空列表,所以你的语句总是正确的。

尝试:

if(jQuery("div.video").length > 0){
  arrows = false;
} ....

答案 1 :(得分:1)

size()函数可以帮助您衡量选择器匹配的元素的数量。此外,没有必要包装body元素以选择其元素。

例如:

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