Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么addClass和removeClass破坏了我的jQuery?_Javascript_Jquery_Addclass_Removeclass - Fatal编程技术网

Javascript 为什么addClass和removeClass破坏了我的jQuery?

Javascript 为什么addClass和removeClass破坏了我的jQuery?,javascript,jquery,addclass,removeclass,Javascript,Jquery,Addclass,Removeclass,在添加上面的两行代码之前,整个函数工作正常。现在,当我单击时,只有这两行可以工作,而我的其余代码不能工作。如果删除这两行代码,代码将再次工作。删除一个类和添加一个类可能会破坏这个函数的其余部分吗?我做错了什么 $('.selected').removeClass('selected'); $(this).addClass('selected'); 据我所知,您需要这样的内容(避免更改HTML): 哪一条线打破了它?你知道在这种情况下,$(这个)是什么吗?啊哈!似乎是$(this.addClas

在添加上面的两行代码之前,整个函数工作正常。现在,当我单击时,只有这两行可以工作,而我的其余代码不能工作。如果删除这两行代码,代码将再次工作。删除一个类和添加一个类可能会破坏这个函数的其余部分吗?我做错了什么

$('.selected').removeClass('selected');
$(this).addClass('selected');

据我所知,您需要这样的内容(避免更改HTML):


哪一条线打破了它?你知道在这种情况下,$(这个)是什么吗?啊哈!似乎是
$(this.addClass('selected')是破坏代码的东西。这与
这个
有关吗?@Syon mouseenter和mouseleave都绑定到
。subject
删除和添加的类都是
。已选择
。那怎么能打破呢?我宁愿说选择器中的
this
确实存在问题@布雷特:什么是由
[class$=-link]
选择器选择的?我很困惑,因为addClass是fpr类链接,mouseenter和mouseleave是指向一个完全不同的类的东西:你能发布至少显示可点击链接的(部分)html吗?
$(document).ready(function(){
    var subject;
    $('.subject').mouseenter(function(){
        if ( $(this).hasClass(subject) ) {
            return 0;
        }
        else {
            $(this).find('.info, img').fadeTo('fast', 1);
        }
    });
    $('.subject').mouseleave(function(){
        if ( $(this).hasClass(subject) ) {
            return 0;
        }
        else {
            $(this).find('.info').fadeTo('fast', 0);
            $(this).find('img').fadeTo('fast', 0.8);
        }
    });

    // BELOW IS WHERE THE PROBLEM IS

    $('[class$=-link]').click(function(){
        $('.selected').removeClass('selected'); // Why do these lines break the 
        $(this).addClass('selected');           // rest of this function?
        $('.' + subject).find('.info').fadeTo('fast', 0);
        $('.' + subject).find('img').fadeTo('fast', 0.8);
        subject = $(this).attr('class').replace("-link","");
        $('.'+ subject ).find('.info, img').fadeTo('fast', 1);
    });
});
$('[class$=-link]').click(function(){
    $('.selected').removeClass('selected');
    $('.' + subject).find('.info').fadeTo('fast', 0).end().find('img').fadeTo('fast', 0.8);
    subject = $(this).attr('class').replace("-link","");//execute this line while "selected" class is not present
    $('.'+ subject).find('.info, img').fadeTo('fast', 1);
    $(this).addClass('selected');//add after everything else is complete
});