Javascript Jquery类检查和更改
昨天我发布了一个问题,要求对我写的一个图像切换脚本提供一些帮助,感谢所有帮助我的人。我扩展了脚本,遇到了一个我一生都无法发现的问题 HTML: 在脚本中,我检查Javascript Jquery类检查和更改,javascript,jquery,html,Javascript,Jquery,Html,昨天我发布了一个问题,要求对我写的一个图像切换脚本提供一些帮助,感谢所有帮助我的人。我扩展了脚本,遇到了一个我一生都无法发现的问题 HTML: 在脚本中,我检查单击标记上的,每个标记都有一个类(a1、a2、a3等)。此外,活动的有一个“a-active”类 我正在尝试检查a-active是否设置为: if ($(this).hasClass('a-active')) { return false; } 然后在那里剪切脚本,使其不会在同一图像中淡入淡出。但是,尽管我在检查classa-a
单击
标记上的,每个
标记都有一个类(a1、a2、a3等)。此外,活动的
有一个“a-active”类
我正在尝试检查a-active
是否设置为:
if ($(this).hasClass('a-active')) {
return false;
}
然后在那里剪切脚本,使其不会在同一图像中淡入淡出。但是,尽管我在检查classa-active
并返回false时返回false,图像仍会继续淡入淡出。我确信问题出在我使用.addClass
和.removeClass
的部分,但是我对Javascript和Jquery的了解对于我正确地调试它来说是非常薄弱的
请有人批评一下这件事好吗
提前感谢。尝试将$(“#功能链接a.a-active”)
更改为$(“#功能链接a.a-active”)
a和.a-active之间的空格表示您正在尝试将的子代与类a-active匹配 您可以使用选择器筛选出活动类
$(“#功能链接a:not(.a-active)”您错误地将匿名函数传递给了您的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');
};
});
经过测试
编辑:我删除了对.stop()
的调用,这是不必要的,并且引入了一个bug。谢谢你,格雷格!这解决了我的问题!:)如果您感兴趣,我在这个JSFIDLE修订版中收紧了我的代码:。我真的很感谢您这么做,我的代码是。。。我该怎么说。。。业余这实际上让我对点符号有了一个我从未真正欣赏过的见解。再次感谢您!如果您想要对jQuery代码的质量进行残酷的评估,请尝试使用jQueryLink。它会发现错误,比如没有很快缓存选择器的结果!另一个速度提升是使用jQuery函数的$(选择器,上下文)
重载来限制引擎查找与选择器匹配的内容的位置。switchToImg()
函数与我的原始答案基本相同-我所做的只是缓存$(“#功能图像”)
选择变量中的选择器,并使用链接。最后两行是删除a-active
类并在刚刚单击的元素上设置它的内容。仅供参考,我还做了另一个稍微不同的版本:。
if ($(this).hasClass('a-active')) {
return false;
}
$(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');
};
});