0

私は、ページ内のdiv.video要素を見つけるだけの単純なifステートメントをjavascript(jqueryライブラリ)に書き込もうとしています。それが見つかった場合は、変数'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要素を含むサンプルページであるため、矢印を非表示にする必要があります。

ビデオ要素ページ

この2番目のリンクには、div.videoアイテムは含まれていません。代わりに、div.photo要素があります。div.videoはページにないため、ここに矢印が表示されます。

写真要素ページ

奇妙なことに、ifステートメントは矢印を非表示にしますが、ビデオコンテンツを含むページだけでなく、すべてのページで非表示にします。

Firebugは私のjsにいかなる種類のエラーも登録していないようですので、どんな助けでも大歓迎です。

4

2 に答える 2

2

要素が見つからない場合、jQuery は空のリストを返すため、ステートメントは常に true になります。

試す:

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 に答える