jQuery if语句$(this)选择器

时间:2012-05-01 09:10:19

标签: javascript jquery jquery-selectors

如何'选择'在jQuery中传递if语句的dom元素?

我正在检查网址是否有哈希值。哈希匹配视频容器的类。如果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');
    }

}

5 个答案:

答案 0 :(得分:3)

我认为使用Jquery的正确方法是:

$('div.video').addClass('active');

答案 1 :(得分:3)

  

如果网址确实包含哈希,则匹配类的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");
}

答案 2 :(得分: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');
    }
}

答案 3 :(得分: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');
}

答案 4 :(得分:-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");
    });
});
}