.removeAttr删除类,脚本仍然有效

时间:2012-05-10 14:09:20

标签: jquery

jQuery存在一个令人困惑的问题,基本上这个代码被添加到2个元素中,并且工作正常,但如果你单击一个单独的元素我想它不工作,我想从这些元素中删除类会阻止它们的工作,但即使没有上课,他们仍在工作......这里有一些代码。

$(".q1a1, .q1a3").click(function (e) {
e.preventDefault();
$(this).animate({ backgroundColor: "#db384b" }, 1000);
$(this).animate({ backgroundColor: "#0F437D" }, 2000);
$(this).children('.wrong').fadeIn(1000).fadeOut(2000);
});

^我希望在下面的代码被点击后这段代码不起作用(如果这样做有意义)

$(".q1a2").click(function (e) {
e.preventDefault();
$(this).animate({ backgroundColor: "#00a6eb" }, 800);
$('.q1a2 .correct').show();
$('.q1a1, .q1a3 ').removeAttr("class");
});

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

尝试做一个.unbind()。看起来像这样。

$('。q1a1,.q1a3')。unbind('click');

您可以阅读有关.unbind()http://api.jquery.com/unbind/

的更多信息

答案 1 :(得分:0)

您可以在一个单独的函数中声明您的处理程序,类似

var SomeFunction = function(e) {
    e.preventDefault();

    // your function code goes here

    $(this).unbind(SomeFunction); // and this removes the handler from the element on the first click
};

$(".q1a1, .q1a3").click(SomeFunction);

答案 2 :(得分:0)

删除该类将无济于事,因为您已将click事件附加到元素。

您应该使用unbind删除

$('.q1a1, .q1a3 ').unbind("click");

http://api.jquery.com/unbind/