0

私の以前の質問で、ポスターは次のことを提案しました:

var formSubmitHandler = function (link, form) {
    var $form = $(form);
    var val = $form.valid();
    var action = $form.data('action');
    var entity = $form.data('entity');

変数が jQuery オブジェクトであることを示すために $ before が使用されていることがわかりました。私の質問は、「var $form = $(form)」という行が必要なのはなぜですか? $form = form だけではいけないのでしょうか?

4

9 に答える 9

2

jQuery では、$(something)は単に省略形ですが、繰り返しjQuery(something)入力するのは面倒なので、が使用されます。jQuery$

JavaScript では、識別子で使用できます。だからあなたは持つことができca$h = 100、それはcash = 100. ただし、一般的に、そのような変数名は避けるべきです。

jQueryはj(something)代わりに固執することもできましたが、当時は他の既存の関数や変数名と競合しないほど十分にユニークだっ$(something)たと思います. と の両方で$使用されている他の JavaScript ライブラリをいくつか見てきました。$$$

于 2012-05-04T07:27:30.847 に答える
1

この質問には2つの部分があります。

最初に:ローカルスコープvar$form持つ変数になります。省略して書くと

$form = "foo";

それからあなたが書いたかのようです

this.$form = "foo";

これはまったく違うものです。this関数内にあるものをいじくり回すコードがない場合、デフォルトでthisはに等しくなりwindow、グローバル変数を設定します。

第二に:var $form = form単に$formのコピーになりますform-あまり役に立ちません。だが

var $form = $(form)

$form、何であれjQueryラッパーformになります。これもまた、でjQueryメソッドを呼び出すことができることを意味するためです$form

于 2012-05-04T07:18:36.190 に答える
1

$はjQueryと同じです。これにより、基本的に「form」変数がjQueryオブジェクトであり、プレーンなdomオブジェクトではないことが確認されます。

書くのと同じですjQuery(form)

于 2012-05-04T07:19:23.970 に答える
1

いいえ、できません。$()DOM 要素で jQuery のメソッドを使用できるようにします。を書いていたら、要素に対してand$form = formを呼び出すことができなかったでしょう。.valid().data()$form

于 2012-05-04T07:19:54.717 に答える
1

いいえ、これ$()は jQuery オブジェクトです。JavaScript では変数の前に使用する必要はありません$が、PHP では必要です... 一部のプログラマーは a で始まる変数を使用することに慣れている$ため、独自の一貫性のために$PHP と JavaScript の両方で a を使用して、物事を統一して混乱を少なくします。彼らのために。ただし、その例を次のように書くこともできます。

var form = $(form);
于 2012-05-04T07:20:20.900 に答える
1

できますが、フォームパラメーターが .valid() と .data() の両方をサポートするものであると期待していることを意味しますが、これはあなたが望むものではないと思います。

考えvar $myvar=$(myvar) てみると、.width() や .height() などについて質問したり、実際のオブジェクトの代わりにセレクターを送信したりできるようにするなど、jquery によって追加されたすべての機能で myvar を強化しています。

したがって、formSubmitHandler 関数は次のように呼び出すことができ formSubmitHandler(link,'.classname_of_form') ます formSubmitHandler(link,'#id_of_form')

于 2012-05-04T07:23:36.110 に答える
1

重要なことは、$(form) が jQuery(form) と同じであることを理解していることです。

jQuery('#myThing') または $('#myThing') のように Javascript で変数を作成することは同じです。

それを理解したら、一歩先へ:

プログラマーは、単にコードを読みやすくするために、「標準」と呼びたいものがあります。このため、通常の Javascript 変数だけでなく、変数に jQuery 変数が含まれていることを読者に示す従来の方法では、$ を前に置きます。

したがって、 $form = jQuery(form); があります。または同じこと、$form = $(form)。

$form の代わりに IAMJQUERYTHING!_form としましょう。

ところで、$(form) を書くと、jQuery(form) と同じように jQuery var が作成されますが、いくつかのライブラリを使用すると、jQuery の代わりに $ を使用すると競合が発生する場合があります。そういうわけで、定期的に $ の代わりに jQuery を使い始めました。

お役に立てれば!

于 2012-05-04T07:48:10.240 に答える
0

formは dom 要素で、$form上記の dom 要素を選択する jQuery オブジェクトです。jQuery には実行できる優れた機能があり、dom 要素にはさまざまな機能とプロパティがあります。まったく関係のない次の例を考えてみましょう。

html:

<div id="#someid">hi</div>

JavaScript:

var $someid = $("#someid");
var someid = document.getElementById("someid");
var content = $someid.html(); // returns 'hi'
var content2 = someid.innerHTML; // returns 'hi'

jQuery関数が domプロパティとどのように.html()異なるかに注意してください。.innerHTML

于 2012-05-04T07:20:45.903 に答える
0

ドル記号を追加するだけでは、jQuery 変数にはなりません。$() を呼び出すと、jQuery オブジェクトが返されます。したがって、通常の HTML 要素にドル記号を付けて名前を付けると、他の開発者は を呼び出せると期待しますが、単純なフォーム要素にはメソッドform.show()がないため、エラーがスローされます。show

于 2012-05-04T07:22:16.513 に答える