Javascript Jquery类检查和更改

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

昨天我发布了一个问题,要求对我写的一个图像切换脚本提供一些帮助,感谢所有帮助我的人。我扩展了脚本,遇到了一个我一生都无法发现的问题

HTML:

在脚本中,我检查
单击
标记上的
,每个
标记都有一个类(a1、a2、a3等)。此外,活动的
有一个“a-active”类

我正在尝试检查
a-active
是否设置为:

if ($(this).hasClass('a-active')) {
    return false;
}
然后在那里剪切脚本,使其不会在同一图像中淡入淡出。但是,尽管我在检查class
a-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');
    };
});