0

我正在尝试在javascript(jquery库)中编写一个简单的if语句,它只是在页面中找到div.video元素,如果它可以找到它,则将变量'arrows'设置为true,如果它不能为false。

这是我到目前为止所拥有的:

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();
    }

});

我正在使用它的页面目前正在开发中,但这里是开发链接:第一个是带有 div.video 元素的示例页面,因此应该隐藏箭头:

视频元素页面

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

照片元素页面

奇怪的是,if 语句确实隐藏了箭头,但它在所有页面上都隐藏了箭头,而不仅仅是包含视频内容的页面。

任何帮助将不胜感激,因为 Firebug 似乎没有在我的 js 中注册任何类型的错误。

4

2 回答 2

2

当 jQuery 找不到任何元素时,它会返回一个空列表,因此您的陈述总是正确的。

尝试:

if(jQuery("div.video").length > 0){
  arrows = false;
} ....
于 2009-09-21T21:19:44.417 回答
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();
    } 
  }
);
于 2009-09-21T21:20:15.353 回答