自从我开始使用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
}
答案 0 :(得分:3)
这是不可能的。与innerText
不同,text()
是一种方法,而不是属性。
尝试:
$("mydiv").text($("mydiv").text() + i);
或者,如果您不想对$("mydiv")
进行2次引用,则可以执行以下操作:
$("mydiv").text(function(i,v){
return v + i;
});
答案 1 :(得分:1)
你只需要在这里使用jQuery。使用text
方法提取值,然后再次调用以设置新值:
for(var i = 0;i<=4;i++)
{
var mydiv = $("mydiv"),
t = mydiv.text();
mydiv.text(t + i);
}
答案 2 :(得分:1)
你不能将这样的shorcuts用于jQuery方法,它只适用于native assignment operators。对于jQuery .text()
,请使用回调:
$("#mydiv").text(function(index, oldtext) {
return oldtext + i;
});
这个回调函数适用于所有jQuery属性“赋值”,无论是.html
,.val
,.prop
,.attr
,.css
还是{{ 1}}。
答案 3 :(得分:0)
jQuery不是一种编程语言,而是一个基于javascript构建的库,因此,规则与使用javascript必须遵循的规则完全相同,而javascript的设计并不是为了理解这些结构。
当然,我的意思是o.m(+1)
在o.p
和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
:
{{1}}
答案 4 :(得分:0)
与其他答案一样,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
节点值更有效。