jQuery関数を変数に割り当てることはできませんが、ラップすることはできます

ケーシー

状況に応じて、ページ全体を表示するか、ページの特定の部分のみを表示する必要があるjQueryコードがいくつかあります。だから私はもともと次のようなコードを持っていました:

var doSearching = wholePage ? $ : $('#portion').find;
var target = doSearching('#someSelector');

いくつかのデバッグの後、これが問題であることに気付き、知識に基づいた推測を行うと、次のような結果になりました。

var doSearching = $;
if (!wholePage)
  {
    doSearching = function(selector) {return $('#portion').find(selector);}
  }
var target = doSearching('#someSelector');

まあ、それは問題なく動作しますが、最初のスニペットが間違っているが、2番目のスニペットは正しいということで何が起こっているのか本当にわかりません。

何が起こっていますか?

TJクラウダー

何が問題なのかというと、呼び出し中findの値に依存しているのですが(内部の内容を知るため)、コードでは直接呼び出しているため、呼び出し中はグローバルオブジェクトになります(ルーズモード)。または(厳密モードでは)、それを期待するjQueryインスタンスではありませんthisfindthisundefinedfind

あなたはこれを行うことができます:

var portion = wholePage ? null : $('#portion'); // Or: `var portion = wholePage && $('#portion');` if you like
var doSearching = portion ? portion.find.bind(portion) : $;
var target = doSearching('#someSelector');

用途はそれFunction#bindを呼び出すときことを保証するdoSearchingfindと呼ばれているthisから生じたjQueryオブジェクトを参照する$('#portion')、そしてそれは内を検索するかを知っているので。

これは基本的に「ラッピング」の例を少し簡潔にしたものですが、1つだけではなくすべての引数を通過させます。


Function#bind はIE8のような古いブラウザにはないES5機能ですが、それらをサポートすることが重要な場合はポリフィルすることができます。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

charに整数値を割り当てることはできますが、charに整数変数を割り当てることはできません

分類Dev

charに整数値を割り当てることはできますが、charに整数変数を割り当てることはできません

分類Dev

forループの匿名関数に変数を割り当てることはできません

分類Dev

エラー-値に割り当てることができません:関数呼び出しは不変の値を返します

分類Dev

プロパティに割り当てることができません:関数呼び出しは不変の値を返します

分類Dev

@classmethodで変数に値を割り当てることはできません

分類Dev

関数を別の関数に「割り当てる」ことはできますか?

分類Dev

最終変数「weekTotalDaylyMinutes」に値を割り当てることはできません

分類Dev

sass変数をcss変数に割り当てることができません

分類Dev

Python-GUIチェックボックスは変数に引数を持つ関数を割り当てることができません

分類Dev

「プロパティに割り当てることができません:「any」は不変です」エラー

分類Dev

lapplyは、関数内でnumericInputを作成する際にラベルを割り当てることができません

分類Dev

ラムダで変数を割り当てることはできますか?

分類Dev

subscribe()からすぐに変数を割り当てることはできません

分類Dev

SQLAlchemyでは、 `relationship`内の` backref`パラメータに変数を割り当てることができますか?

分類Dev

エラーTS2539:変数ではないため、 'c'に割り当てることができません

分類Dev

グローバルスコープで画像変数を宣言することは割り当てられませんが、関数内で割り当てられます

分類Dev

IntelliJ IDEAに警告のみが「部分的」に抑制することができる「変数が割り当てられることはありません」

分類Dev

TypescriptでReactのonClickプロパティに関数を割り当てることはできません

分類Dev

javascriptで関数を呼び出した後、変数に値を割り当てることができません

分類Dev

内部の関数に属性を割り当てることはできますか?

分類Dev

関数の外部に変数を移動することはできません

分類Dev

関数 'operator []'が定数値を返すため、戻り値に割り当てることができません

分類Dev

変数はサブスクライブ メソッドから割り当てることができません

分類Dev

イニシャライザタイプJQuery <TElement>は変数タイプJQueryに割り当てることができません

分類Dev

Excel 2016では、ワークシートを変数に割り当てることができません

分類Dev

Emacs LispはSchemeのような変数にラムダ形式を割り当てることができますか?

分類Dev

タイプ「Future <String>」の値をタイプ「String」の変数に割り当てることはできません

分類Dev

C ++、式を関数にすることはできません

Related 関連記事

  1. 1

    charに整数値を割り当てることはできますが、charに整数変数を割り当てることはできません

  2. 2

    charに整数値を割り当てることはできますが、charに整数変数を割り当てることはできません

  3. 3

    forループの匿名関数に変数を割り当てることはできません

  4. 4

    エラー-値に割り当てることができません:関数呼び出しは不変の値を返します

  5. 5

    プロパティに割り当てることができません:関数呼び出しは不変の値を返します

  6. 6

    @classmethodで変数に値を割り当てることはできません

  7. 7

    関数を別の関数に「割り当てる」ことはできますか?

  8. 8

    最終変数「weekTotalDaylyMinutes」に値を割り当てることはできません

  9. 9

    sass変数をcss変数に割り当てることができません

  10. 10

    Python-GUIチェックボックスは変数に引数を持つ関数を割り当てることができません

  11. 11

    「プロパティに割り当てることができません:「any」は不変です」エラー

  12. 12

    lapplyは、関数内でnumericInputを作成する際にラベルを割り当てることができません

  13. 13

    ラムダで変数を割り当てることはできますか?

  14. 14

    subscribe()からすぐに変数を割り当てることはできません

  15. 15

    SQLAlchemyでは、 `relationship`内の` backref`パラメータに変数を割り当てることができますか?

  16. 16

    エラーTS2539:変数ではないため、 'c'に割り当てることができません

  17. 17

    グローバルスコープで画像変数を宣言することは割り当てられませんが、関数内で割り当てられます

  18. 18

    IntelliJ IDEAに警告のみが「部分的」に抑制することができる「変数が割り当てられることはありません」

  19. 19

    TypescriptでReactのonClickプロパティに関数を割り当てることはできません

  20. 20

    javascriptで関数を呼び出した後、変数に値を割り当てることができません

  21. 21

    内部の関数に属性を割り当てることはできますか?

  22. 22

    関数の外部に変数を移動することはできません

  23. 23

    関数 'operator []'が定数値を返すため、戻り値に割り当てることができません

  24. 24

    変数はサブスクライブ メソッドから割り当てることができません

  25. 25

    イニシャライザタイプJQuery <TElement>は変数タイプJQueryに割り当てることができません

  26. 26

    Excel 2016では、ワークシートを変数に割り当てることができません

  27. 27

    Emacs LispはSchemeのような変数にラムダ形式を割り当てることができますか?

  28. 28

    タイプ「Future <String>」の値をタイプ「String」の変数に割り当てることはできません

  29. 29

    C ++、式を関数にすることはできません

ホットタグ

アーカイブ