[英]How to use += operator
自从我开始使用JQuery以来,我总是想知道这个运算符在JQuery示例中如何工作:
for(var i = 0;i<=4;i++)
{
document.getElementById("mydiv").innerText += i;//<- works as expected
}
//results will be 0,1,2,3,4
但如果我使用JQuery而不知道该怎么做
for(var i = 0;i<=4;i++)
{
$("mydiv").text(+i)//<- NO!
$("mydiv").text+(i)//<- NO!
$("mydiv").+text(i)//<- JAJA COME ON!
$("mydiv").text(i)+//<- I guess that was stupid
}
这是不可能的。 与innerText
不同, text()
是一个方法,而不是一个属性。
尝试:
$("mydiv").text($("mydiv").text() + i);
或者,如果您不想对$("mydiv")
进行2次引用,则可以执行以下操作:
$("mydiv").text(function(i,v){
return v + i;
});
你只需要在这里使用jQuery。 使用text
方法提取值,然后再次调用它以设置新值:
for(var i = 0;i<=4;i++)
{
var mydiv = $("mydiv"),
t = mydiv.text();
mydiv.text(t + i);
}
您不能将此类shorcuts用于jQuery方法,它仅适用于本机赋值运算符 。 对于jQuery .text()
,使用回调:
$("#mydiv").text(function(index, oldtext) {
return oldtext + i;
});
这个回调的东西适用于所有jQuery属性“赋值”,无论是.html
, .val
, .prop
, .attr
, .css
还是.text
。
jQuery不是一种编程语言,而是一个基于javascript的库,因此,规则与你必须使用javascript遵循的规则完全相同,而javascript并不是为了理解这些结构而设计的。
当然我的意思是om(+1)
不会增加op
而o.p++
和o.p+=1
会:
var o = {};
o.p = 1;
o.m = function () { return this.p; };
o.m(+1); // o.p equals 1
o.p++; // o.p equals 2
o.p+=1; // o.p equals 3
与其他答案一样,jQuery只是一个框架,并且遵循与任何JavaScript代码相同的语法规则。
虽然我看到将function
传递给.text()
的优点,但我认为这不是解决实际问题的通用方法:如何在使用函数而不是变量时连接文本。
我赞成使用Array.join()
进行有效的连接:
var textParts = [ $("mydiv").text() ];
for(var i = 0;i<=4;i++)
{
textParts[textParts.length] = i;
}
$("mydiv").text(textParts.join(',')) // result: '...,1,2,3,4'
如果您更喜欢循环的函数方法,也可以使用Array.map()
。
AFAIK DOM功能相当慢,因此首先进行串联然后设置div
节点值更有效。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.