[英]Jquery class checking and changing
我昨天发布了一个问题,要求我写的图像切换脚本有所帮助,谢谢您提供的所有帮助。 我扩展了脚本,遇到了一个问题,我无法终生发现问题所在。
HTML:
<div id="feature-image">
<h1><span>A random heading</span></h1>
</div>
<div id="feature-links">
<a class="a1" href="#">1</a>
<a class="a2" href="#">2</a>
<a class="a3" href="#">3</a>
</div>
JS + jQuery:
$(function(){
$('#feature-links a').click(function() {
if ($(this).hasClass('a-active')) {
return false;
} else {
var image = $(this).attr('class');
switchToImg(image, function() {
$('#feature-links a .a-active').removeClass('a-active');
$('#feature-links .' + image).addClass('a-active');
});
}
});
function switchToImg(image){
$('#feature-image').fadeOut('300', function(){
$('#feature-image').css('background-image','url(images/main_' + image + '.jpg)');
$('#feature-image').fadeIn('300');
});
};
在脚本中,我检查是否click
了<a>
标记,每个<a>
标记都有一个类(a1,a2,a3等)。 同样,主动<a>
具有“ a-active”类别。
我正在尝试检查是否为此设置了a-active
:
if ($(this).hasClass('a-active')) {
return false;
}
并在此处剪切脚本,以使其不会淡入淡出同一张图片。 但是,尽管我在检查a-active
类时返回false并返回false,但是图像仍继续淡入淡出。 我确定问题出在我使用.addClass
和.removeClass
的部分中,但是我对Javascript和Jquery的了解对我来说.addClass
,可以对其进行正确调试。
有人可以对此批评一下吗?
提前致谢。
您错误地将一个匿名函数传递给了switchToImg()
函数,该函数不接受一个匿名函数。
相反,请尝试以下JS:
$(function() {
$('#feature-links a').click(function() {
if ($(this).hasClass('a-active')) {
return false;
} else {
var image = $(this).attr('class');
switchToImg(image);
}
});
function switchToImg(image) {
$('#feature-image').fadeOut('300', function() {
$('#feature-image').css('background-image', 'url(images/main_' + image + '.jpg)');
$('#feature-image').fadeIn('300');
});
$('#feature-links a.a-active').removeClass('a-active');
$('#feature-links .' + image).addClass('a-active');
};
});
在jsFiddle中测试。
编辑:我删除了对.stop()
的调用,这是没有必要的,并引入了一个错误。
尝试将$('#feature-links a .a-active')
更改$('#feature-links aa-active')
。
.a和.a-active之间的空格表示您正在尝试将<a>的后代与a-active类进行匹配。
您可以使用:not选择器来过滤掉活动类。
$('#feature-links a:not(.a-active)')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.