[英]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.