0

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");
});

有任何想法吗?

4

3 回答 3

1

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

$('.q1a1, .q1a3 ').unbind('点击');

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

于 2012-05-10T14:14:26.573 回答
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);
于 2012-05-10T14:13:58.183 回答
0

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

您应该使用 unbind 删除

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

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

于 2012-05-10T14:18:17.230 回答