2

jQueryでifステートメントを渡すdom要素を「選択」するにはどうすればよいですか?

URLにハッシュがあるかどうかを確認しています。ハッシュはビデオ コンテナのクラスと一致します。URL にハッシュがある場合、一致するクラスを持つ iframe にアクティブなクラスが追加され、非表示ではなくブロックとして表示されます。そうでない場合は、リストの最初のビデオが表示されます。

jQuery(document).ready(function($) {

    videoCarousel();

}); 

function videoCarousel() {

    // Set variables
    var carousel = $('#video_container');
    var videos = $('#video_container #video iframe');

    // Get url hash and remove # from begining
    var hash = window.location.hash.substring(1);


    if (videos.hasClass(hash)) {
        $(this).addClass('active');
    } else {
        videos.first().addClass('active');
    }

}
4

5 に答える 5

3

Jquery を使用する正しい方法は次のようになると思います。

$('div.video').addClass('active');
于 2012-05-01T09:12:32.713 に答える
3

URL にhashが含まれている場合、一致するクラスを持つiframeにアクティブなクラスが追加され、非表示ではなくブロックとして表示されます。そうでない場合は、リストの最初のビデオが表示されます。

(私の強調)

それが重要な情報であり、私たちの多くは過去に読んだと思います. セレクターを変更する必要がありますが、まったく必要ありませんthis

function videoCarousel() {
    // Set variables
    var carousel = $('#video_container');
    var videos = $('#video_container #video iframe');

    // Get url hash and remove # from begining
    var hash = window.location.hash.substring(1);

    // Get the video with the matching class
    var targetVideo;
    if (hash) {
        targetVideo = videos.filter("." + hash);
    }
    if (!targetVideo || !targetVideo[0]) {
        // There's no hash, or no match; use the first
        targetVideo = videos.first();
    }

    // Add the class
    targetVideo.addClass("active");
}
于 2012-05-01T09:27:11.947 に答える
1

よくわかりませんが、これをお探しですか: DEMO

$("div.video").each(function(){
  $(this).addClass("active");
});

あなたの編集のおかげで

あなたが望むことができると思います:

jQuery(document).ready(function($) {

    videoCarousel();

}); 

function videoCarousel() {

    // Set variables
    var carousel = $('#video_container');
    var videos = $('#video_container #video iframe');

    // Get url hash and remove # from begining
    var hash = window.location.hash.substring(1);

    var hasone = false;
    videos.each(function(){
      if($(this).hasClass(hash)) {
        $(this).addclass("active");
        hasone = true;
        return false; //breaks each();
      }
    });
    if(!hasone) {
      videos.first().addClass('active');
    }
}
于 2012-05-01T09:13:15.167 に答える
0
function videoCarousel() {

    // Set variables
    var carousel = $('#video_container');
    var videos = $('#video_container #video iframe');

    // Get url hash and remove # from begining
    var hash = window.location.hash.substring(1);
    //Filter out the element that match the hash or is the first video in the collection
    var activeVideo = videos.filter(function(i) {
        return hash === "" ? i === 0 : $(this).hasClass(hash);
    });

    activeVideo.addClass('active');
}
于 2012-05-01T09:21:55.780 に答える
-1

おそらく次のようにしてみてください:

function videoCarousel() {

// Set variables
var carousel = $('#video_container');
var videos = $('#video_container #video iframe');

// Get url hash and remove # from begining
var hash = window.location.hash.substring(1);


$(".yourClass").each(function() {
    if ($(this).hasClass(hash)) {  
        $(this).addClass("active"); 
    } else {
        videos.first().addClass("active");
    });
});
}
于 2012-05-01T09:13:39.267 に答える