如何'选择'在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');
}
}
答案 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");
});
});
}