3

自从我开始使用 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


}
4

5 回答 5

3

这是不可能的。与innerText,不同text()的是方法,而不是属性。

尝试:

$("mydiv").text($("mydiv").text() + i);

或者,如果您不想做 2 次引用,$("mydiv")您可以这样做:

$("mydiv").text(function(i,v){
   return v + i; 
});
于 2013-02-13T14:40:52.847 回答
1

你只需要在这里使用 jQuery。使用该text方法提取值,然后再次调用它来设置新值:

for(var i = 0;i<=4;i++)
{
    var mydiv = $("mydiv"),
        t = mydiv.text();
    mydiv.text(t + i);
}
于 2013-02-13T14:42:15.163 回答
1

您不能对 jQuery 方法使用此类快捷方式,它仅适用于本机赋值运算符。对于jQuery.text(),使用回调:

$("#mydiv").text(function(index, oldtext) {
    return oldtext + i;
});

这个回调函数适用于所有 jQuery 属性“赋值”,无论是.html.val.prop.attr.css还是.text.

于 2013-02-13T14:49:00.963 回答
0

jQuery 不是一种编程语言,而是基于 javascript 构建的库,因此,规则与使用 javascript 必须遵循的规则完全相同,并且 javascript 并非旨在理解这些结构。


编辑

当然,我的意思o.m(+1)是不会增加o.pwhileo.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
于 2013-02-13T14:53:06.043 回答
0

就像其他答案指出的那样,jQuery 只是一个框架,并且受制于与任何 JavaScript 代码相同的语法规则。

虽然我看到了传递 a functionto的优势.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会更有效。

于 2013-02-13T15:18:21.543 回答