jQuery每次点击都附加不同的文字
我有一个基本的jQuery函数:
$("#selector").click(function(){ $("#target").append("Some text to be added..."); });
这很好,除了我想在每个连续点击上附加不同的文字。 例如:
- 首先单击附加文本“消息1”
- 第二次单击附加文本“消息2”
- 第三次单击会附加文本“消息3”
等等等等…
另外,我想设置一个限制,比如4,经过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]); });
这实际上会“追加”它们。 如果您希望每次都替换每条消息,则使用.text()
而不是.append()
。
DEMO (使用.text()
): http : //jsfiddle.net/thVK6/
每次单击都会增加i
变量。 当i
等于messages.length
,它将重置为0
。
因此,每次单击, i
都会使用从数组中获取新消息。
为了进一步解释增量技巧, %
modulo运算符在将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
现在再次0
,所以它重新开始。
所以相同的增量技巧,但如上所述将是……
$("#selector").click(function(){ ++i; i = i % messages.length; target.append(messages[ i ]); });
一种可能性:
(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/
参考: http : //jsfiddle.net/HDUAK/2/
Select Target var i = 1; $("#selector").click(function(){ if(i > 4) {return false} else { $("#target").append("Message"+i); } i++; });