jQuery 每次点击都会附加不同的文本

发布于 2024-12-27 23:51:59 字数 339 浏览 1 评论 0原文

我有一个基本的 jQuery 函数:

$("#selector").click(function(){
    $("#target").append("Some text to be added...");
});

工作正常,除了我想在每次连续单击时附加不同的文本。例如:

  1. 第一次单击附加文本“消息 1”
  2. 第二次单击附加文本“消息 2”
  3. 第三次单击附加文本“消息 3”

等等...

另外,我想设置一个限制,比如说 4点击 4 次后,没有任何反应。

任何帮助将不胜感激。

I have a basic jQuery function going on:

$("#selector").click(function(){
    $("#target").append("Some text to be added...");
});

That works fine, except I want to append different text on each sequential click. For example:

  1. First click appends text "Message 1"
  2. Second click appends text "Message 2"
  3. Third click appends text "Message 3"

and so on and so forth...

Also, I would like to set a limit, to say, 4 which after 4 clicks, nothing else happens.

Any help would be appreciated.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

最美的太阳 2025-01-03 23:51:59
var messages = [
  'First click appends text "Message 1"',
  'Second click appends text "Message 2"',
  'Third click appends text "Message 3"'
];

var i = -1;

var target = $("#target");

$("#selector").click(function(){
    target.append(messages[i = ++i % messages.length]);
});

这实际上会“附加”它们。如果您想每次都替换每条消息,则可以使用 .text() 而不是 .append()

DEMO(使用 .text()): http://jsfiddle.net/thVK6/

i 变量将随着每次点击而递增。当i等于messages.length时,它将被重置为0

因此,每次点击,i 用于从数组中获取新消息。


为了进一步解释增量技巧,% 模运算符返回 i 除以 messages.length 时的余数。

i等于messages.length时,余数为0,所以我们回到了开始。

var i = -1;

第一次点击:

++i; // 0
i = i % messages.length; // 0

messages[ i ]; // first message (index 0)

第二次点击:

++i; // 1
i = i % messages.length; // 1

messages[ i ]; // second message (index 1)

第三次点击:

++i; // 2
i = i % messages.length; // 2

messages[ i ]; // third message (index 2)

第四次点击:

++i; // 3
i = i % messages.length; // 0, because 3 % 3 === 0

messages[ i ]; // first message (index 0)

...所以 i< /code> 现在再次变为 0,因此一切重新开始。


因此,相同的增量技巧,但按上面的说明将是...

$("#selector").click(function(){
    ++i;
    i = i % messages.length;

    target.append(messages[ i ]);
});

http://jsfiddle.net/thVK6/ 4/

var messages = [
  'First click appends text "Message 1"',
  'Second click appends text "Message 2"',
  'Third click appends text "Message 3"'
];

var i = -1;

var target = $("#target");

$("#selector").click(function(){
    target.append(messages[i = ++i % messages.length]);
});

This will actually "append" them. If you wanted to replace each message each time, you'd use .text() instead of .append().

DEMO (using .text()): http://jsfiddle.net/thVK6/

The i variable will be incremented with each click. When i is equal to messages.length, it will be reset to 0.

So with each click, i is used to grab a new message from the Array.


To further explain the increment trick, the % modulo operator returns the remainder when dividing i by messages.length.

When i is equal to messages.length, the remainder is 0, so we're back to the start.

var i = -1;

First click:

++i; // 0
i = i % messages.length; // 0

messages[ i ]; // first message (index 0)

Second click:

++i; // 1
i = i % messages.length; // 1

messages[ i ]; // second message (index 1)

Third click:

++i; // 2
i = i % messages.length; // 2

messages[ i ]; // third message (index 2)

Fourth click:

++i; // 3
i = i % messages.length; // 0, because 3 % 3 === 0

messages[ i ]; // first message (index 0)

...and so i is now 0 again, so it starts over.


So the same increment trick, but spelled out as above would be...

$("#selector").click(function(){
    ++i;
    i = i % messages.length;

    target.append(messages[ i ]);
});

http://jsfiddle.net/thVK6/4/

夕嗳→ 2025-01-03 23:51:59

一种可能性:

(function () {
    var messages, i;

    i = 0;
    messages = [
        'Message 1 ... ',
        'Message 2 ... ',
        'Message 3 ... '
    ];

    $( elem ).click( function () {
        if ( i === messages.length ) { i = 0; }
        $( target ).append( messages[ i ] );
        i += 1;
    });
}());

现场演示: http://jsfiddle.net/RhBAh/

One possibility:

(function () {
    var messages, i;

    i = 0;
    messages = [
        'Message 1 ... ',
        'Message 2 ... ',
        'Message 3 ... '
    ];

    $( elem ).click( function () {
        if ( i === messages.length ) { i = 0; }
        $( target ).append( messages[ i ] );
        i += 1;
    });
}());

Live demo: http://jsfiddle.net/RhBAh/

第几種人 2025-01-03 23:51:59

参考:http://jsfiddle.net/HDUAK/2/

<div id="selector">Select</div>
<div id="target">Target</div>


var i = 1;
$("#selector").click(function(){
    if(i > 4) {return false} else {
         $("#target").append("Message"+i);
    }

    i++;
});

reference: http://jsfiddle.net/HDUAK/2/

<div id="selector">Select</div>
<div id="target">Target</div>


var i = 1;
$("#selector").click(function(){
    if(i > 4) {return false} else {
         $("#target").append("Message"+i);
    }

    i++;
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文