2

私は samsung SDK に取り組んでおり、スマート テレビ用の JavaScript アプリを変更しています。このコードに出くわしましたが、何が機能するのかわかりませんif($('.menuButton').push()){...。ネイティブのプッシュ機能は上書きされませんでしたが、これは引き続き機能します。push は要素を配列に追加すると思っていましたが、そうではないようです

if(direction==tvKey.KEY_ENTER){
        if($('.menuButton').push()){
            $('.simple_menu').slideDown('easy');
     ........
4

3 に答える 3

3

JQuery セレクターの呼び出しは、Javascript の通常の配列の.push(x)呼び出しと同じように機能します。.push(x)

W3SchoolsおよびMozilla Developer Networkから:

push() メソッドは、配列の最後に新しい項目を追加し、新しい長さを返します。

戻り値: メソッドが呼び出されたオブジェクトの新しい長さプロパティ。

に引数が渡されない場合.push()、配列はそのまま残り、長さは引き続き返されます。ここで何が起こっているかというと、配列の長さが返され、ifステートメントの評価に使用されます。

例: 以下は、pタグの数を返します。

$("p").push();

ただし注意:.push JQuery オブジェクト のメソッドは、内部使用のみを目的としてマークされているため、 に依存しないでください

于 2013-01-25T14:44:13.827 に答える
1

この方法に依存するべきではありません。使用しないでください。

push()jQuery オブジェクト (配列のようなオブジェクト) で定義され、ネイティブArray.prototype.push()メソッドにマップされますが、内部使用のみを目的としており、文書化されておらず、将来のバージョンで同じように機能するかどうかはわかりません。

このコードでは、jQuery オブジェクトの要素数を取得するために使用されているようです (これはネイティブ.push()が行うことで、プロパティの値を返しlengthます)。

しかし、それを行うための文書化された方法があります:

$('.menuButton').length

このコードは、 がゼロの場合、ブール値に変換されたときに Javascript でlength評価されるという事実に依存しているため、ブロック内のコードは jQuery オブジェクトが空でない場合にのみ実行されます。falseif

于 2013-01-25T15:14:25.663 に答える
0

$().pushが機能するのか、または存在するのかどうかはわかりませんが (ネイティブの JavaScript メソッドと混同しないでくださいarray.push())、おそらく探しているのは次の$().addとおりです。

一連の DOM 要素を表す jQuery オブジェクトを指定すると、.add() メソッドは、それらの要素とメソッドに渡された要素の和集合から新しい jQuery オブジェクトを構築します。

また、jQuery オブジェクトが false になることはあり得ないことに注意してください。if ステートメントはおそらく次のようになります。

if($('.menuButton').add(something).length > 0) {

編集:内部専用で、文書化されておらず、サポートされていないjQuery のメソッドを使用しているようです。現在のjQueryオブジェクトの長さを取得したい場合(これが実行しているよう$().push()に見えます)、単に使用しますlength

if($('.menuButton').length > 0) {
于 2013-01-25T14:43:09.107 に答える