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

こんなことありえない。とは異なりinnerTexttext()はプロパティではなくメソッドです。

Try:

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

Or if you'd rather not make 2 references to $("mydiv") you can do:

$("mydiv").text(function(i,v){
   return v + i; 
});
于 2013-02-13T14:40:52.847 に答える
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 に答える
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 に答える
0

他の回答が指摘しているように、jQueryは単なるフレームワークであり、JavaScriptコードと同じ構文規則に従います。

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 に答える
0

jQuery はプログラミング言語ではなく、javascript に基づいて構築されたライブラリであるため、規則は javascript を使用する場合に従う必要がある規則とまったく同じであり、javascript はこれらの種類の構造を理解するように設計されていません。


編集

もちろん、 whileはインクリメントせo.m(+1)ず、インクリメントします:o.po.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 に答える