当满足条件时,如何使用jquery将文本附加到多个div

时间:2013-11-18 21:15:56

标签: javascript jquery html

当点击所有8个div时,我希望剩余的红色div显示效果很好。它似乎没有工作,我试图通过使用hideous document.getElementsByClassName获得类,但我想要一些更简单的工作。请帮助!

var score;

$(document).ready(function () {
    $('.b').click(function () {
        $(this).fadeOut("slow");
    });
});

function click() {
    score += 1;
    if (score === 8) {  document.getElementsByClassName(a).innerHTML += 'Well Done';
    }
}

http://jsfiddle.net/clarinetking/BbSMW/8/(JSFiddle)

3 个答案:

答案 0 :(得分:2)

一些事情:

- score从未获得默认值,在每次尝试添加1时产生NaN

- 你永远不会打电话给click()

- 你必须遍历你的div并应用innerHTML - 我只是使用了jQuery,因为你已经有它了:

var score = 0;

$(document).ready(function () {
    $('.b').click(function () {
        $(this).fadeOut("slow");
        click();
    });
});

function click() {
    score += 1;
    if (score === 8) {  $(".a").text('Well Done');
    }
    console.log(score);
}

演示:http://jsfiddle.net/BbSMW/10/

答案 1 :(得分:1)

代码的替代解决方案可能是检查类b中的任何元素是否仍然可见:

$(document).ready(function () {
    $('.b').click(function () {
        $(this).fadeOut("slow", function() {
            if($(".b:visible").length === 0) {//fading out element is still technically visible ;)
                $(".a").text("Well done");            
            }
        });
    });
});

更新代码以处理评论中提到的竞争条件。

Updated Fiddle (im dumb)

答案 2 :(得分:0)

$(".className").text("Well Done")

将上述内容放入点击处理程序中。