如何在jQuery中每次点击事件附加文本x次?

时间:2013-08-16 17:40:10

标签: javascript jquery append

最简单的例子我可以想出的是第一次点击时无休止的“你点击”,然后是第二次,“你再次点击”和“你一次又一次点击”,最后“你一次又一次点击”。 ..n ......再一次。“

所以第一次点击是正常的。第二次“再次”追加。每次追加“再次”。

我尝试用增加的索引来做这件事,但我无法弄清楚如何将字符串乘以我想要的那样:

$("button").click(function(){
    $(this).text("You clicked" + index++ + "");

但当然只会返回“你点击1”等等。

4 个答案:

答案 0 :(得分:4)

一种简单的方法是使用如下所示的数组并使用它。

var myText = ['You clicked', ' again', ' and again'];
var ptr = 0;
$("button").click(function () {
    $(this).text(function (i, v) {
        return (ptr == 0)?myText[ptr]:(v + myText[ptr]);
    });
    if (ptr < myText.length - 1) ptr++;
});

使用该数组,您可以控制要追加的不同邮件数量。

DEMO: http://jsfiddle.net/x66sd/

答案 1 :(得分:3)

$(this).text($(this).text() + " again");

大多数操纵元素属性的jQuery函数都可用于获取和设置该属性的值,例如: $elem.text()为您提供当前文字值,$elem.text(value)将其设置为value

答案 2 :(得分:3)

$(document).ready(function(){
var c = 0;
    $('button').click(function(){
        if(c == 0) {$(this).append(' again');c++;}
        else $(this).append(' and again')
    })

})

我建议这样做,而不是两次使用$(this).text()。 :)

<强> JSFIDDLE DEMO

答案 3 :(得分:1)

不是很优雅,但它有效:

http://jsfiddle.net/35uHB/

var clickCount = 0;
$('.theDiv').click(function() {
    var text = ["You clicked"];

    if (clickCount > 0) {
        text.push(" again");
    }

    for (var i = 1; i < clickCount; i++)
    {
        text.push(" and again");
    }
    text.push("!");

    clickCount++;

    $('.result').text(text.join(''));    

});