問題タブ [jquery-chaining]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - jQuery を使用して要素を作成し、その場で選択する方法
私はこれに少し困惑しています。(jQuery を使用して) いくつかの要素を作成し、そのラップされたセットで関数を呼び出し、チェーンを介してこのプロセスを数回続けたいと思います。例えば、
プラグインへの最初の呼び出しが xxx に影響を与える場合、2 番目の呼び出しは yyy に影響を与えます。しかし、これは起こっていません。毎回最初の div (id=xxx) で call_plugin() が呼び出されていると思います。回避策はありますか?
前もって感謝します!
jquery - 前のセットが完了した後にのみ、一連の作業をループで実行する
一連の一連の操作を一連のチェーンで完了するコードがあります。一連の操作自体がループで実行されます。私が扱っているシステムの性質上、操作セットは同期的に実行する必要があります (つまり、次の操作セットは最初のセットが完了するまで実行できません)。非同期実行は、(私の制御下にない) リモート プロセッサを停止させ、コードが失敗する原因となる可能性があります。現在、これを機能させることができた唯一の方法は、アラートボックスを使用することです。これは本当に不十分であり、オプションではありません. 私はもう試した:
- $.ajax を使用し、async を false に設定する
- スリープ機能を使う
- アラート ボックス (必死で使用)
ここにコードがあります - 何か考えはありますか?:
javascript - Jqueryチェーン内の現在のオブジェクトへの参照
次のチェーンが機能します。
しかし、これはしません:
this.scrollHeight
あまり機能しません。jqueryチェーンで現在のオブジェクト参照を取得するにはどうすればよいですか?
jquery - JQuery でプロシージャを使用してアニメーション イベントを適切にシーケンスする方法
私は、JQuery でいくつかのアニメーション イベントを、同時にまたは特定の順序で発生させようとしている他の多くの手順でシーケンスしようとするのに少し苦労しています。基本的に私が達成したいことは次のとおりです。
- ユーザーがボタンをクリックすると、カスタム div ポップアップ ボックスが画面に表示されます。
- ポップアップ ボックスは、その背景とともにアニメーション化されます。
- ポップアップ ボックスには読み込みメッセージが表示され、(1.5 秒の遅延の後) Ajax 要求がサーバーに送信され、指定されたコンテンツがプルダウンされてポップアップ ボックスに読み込まれます。
- 次に、テキストを読み込んでいるポップアップ ボックスを、サイドダウンを介して取得したコンテンツに置き換える必要があります。
- ユーザーがメッセージを読んだら、ポップアップ ボックスの閉じるアイコンをクリックするか、エスケープ キーを押してポップアップを閉じます。
- フェードアウト アニメーションでポップアップが閉じます。
現在のコード (以下の JSFiddle へのリンク) では、ユーザーがボタンをクリックして再度表示する前にポップアップを閉じれば、これは問題なく動作し、ポップアップ アニメーションとシーケンスが正しく表示されます。ただし(これは私の問題です)...ポップアップを開いたままにし、ユーザーがボタンを再度クリックすると、アニメーションのシーケンスがめちゃくちゃになります...一連のイベントがバラバラになっているようです-その手順ポップアップが最初にポップアップが閉じるのを待たず、恐ろしい結果が得られることを示しています。
これをどのように解決できるかについてのアイデアはありますか?
理想的には、コードのロジックが示唆するように、ポップアップのアニメーション表示を再開する前に、ポップアップのクローズ アニメーションが完全に終了するのを待つ必要があります。JQueryに関してはまだ初心者なので、ご容赦ください。私はいくつかの調査を試みましたが、解決策は Deferreds を巧妙な方法で使用することにあると考えています。しかし、皆さんが素晴らしい、効果的で最新の解決策を提供してくれ、私の髪をすべて引き抜くのを防いでくれると思いました. =)
これが私のコードです(場所によっては多少単純化されていますが、それでも問題をうまく模倣しています):
jquery - jQueryのdeferredの「then」メソッドをいつ使用する必要がありますか?「pipe」メソッドをいつ使用する必要がありますか?
jQueryDeferred
には、関数の非同期チェーンを実装するために使用できる2つの関数があります。
then()
deferred.then( doneCallbacks, failCallbacks ) Returns: Deferred
doneCallbacksDeferredが解決されたときに呼び出される関数または関数の配列。
failCallbacksDeferredが拒否されたときに呼び出される関数または関数の配列。
pipe()
deferred.pipe( [doneFilter] [, failFilter] ) Returns: Promise
doneFilterDeferredが解決されたときに呼び出されるオプションの関数。
failFilterDeferredが拒否されたときに呼び出されるオプションの関数。
then()
私はそれより少し長くなっていることを知っているpipe()
ので、後者はいくつかの追加の利点を追加する必要がありますが、違いが正確に何であるかは私にはわかりません。Deferred
名前は異なり、aを返すこととaを返すことの違いPromise
はわずかに見えますが、どちらもほぼ同じコールバックパラメータを取ります。
私は公式ドキュメントを何度も読んだことがありますが、常に「密度が高く」すぎて頭を包み込むことができず、検索するとどちらかの機能について多くの議論が見つかりましたが、違いを明確にするものは見つかりませんでしたそれぞれの長所と短所。
では、いつ使用するのが良いのかthen
、いつ使用するのが良いのpipe
か?
添加
フェリックスの優れた答えは、これら2つの機能の違いを明確にするのに本当に役立ちました。then()
でも、の機能よりもの機能の方がいい時があるのではないでしょうかpipe()
。
それはpipe()
より強力であることは明らかでありthen()
、前者は後者ができることは何でもできるようです。使用する理由の1つthen()
は、その名前が、同じデータを処理する一連の関数の終了としての役割を反映しているためである可能性があります。
しかし、新しいものを返すために実行できないthen()
元のを返す必要があるユースケースはありますか?Deferred
pipe()
Promise
internet-explorer-7 - div を切り替えるこの JQuery コードは IE7 では機能しませんが、他のブラウザーでは機能します
これが私の問題です。最新のブラウザーでは正常に動作する jquery がありますが、IE7 では動作しません。
< A > タグの 1 つをクリックすると、「innerdetails」という div が開きます。
ここに私のHTMLがあります:
問題のある Jquery コードを次に示します。
興味深いことに、アラートでは、IE7 は .children(".inner-course-details") の長さとして "0" を返します。
Chrome は「1」を返します
jquery - $.ajax 呼び出しを使用するカスタム プラグインはチェーンを壊します
Web サービス呼び出しから読み取った xml を使用してページに html を作成するために使用される jQuery プラグインを作成しました。バックアップとして、webservice 呼び出しが失敗した場合、html の構築に使用するデフォルトの xml が var に格納されています。現在、Web サービスを利用できないため、ダミーの xml を使用して障害シナリオをテストしています。$.ajax 呼び出しを除外してすべてを記述し、作業しています。コードに Web サービスへの $.ajax 呼び出しを含めても問題なく動作しますが、チェーンは壊れています。
私は "return this;" を知っています. $.when().then() を実装して $.ajax 呼び出しをラップし、ajax 呼び出しの非同期の性質がもたらす可能性のある問題に対処しましたが、連鎖は依然として行われます。うまくいかない。firebug コンソールは、チェーン内の次のメソッドに到達すると、メソッドの戻り値が定義されていないことを常に通知します。私のコードは以下のとおりです(時間を節約するために多くを疑似コードに置き換えました):
javascript - pipe() と $.Deferred.resolve() を分離する
上記のコードで dfr を個別にロードし、それを $.Deferred() のようなものに渡す方法はありますか....
http://jsfiddle.net/realwork007/KgY33/25/この例に似ていますが、唯一のことは、dfr を個別に入力することです。
編集: 選択ソート アルゴリズムを視覚化するために書いています。change backgroundOfBlock()、blink(index) および swap(from,to) のような 3 ~ 4 個のヘルパー関数があります。
したがって、私の選択ソートの視覚化は次のようになります。
このメソッドを実行すると、すべてのアニメーションが同時に実行されますが、順番に実行する必要があります...
どんなテクニックを使って...
javascript - Jquery Promise のチェーン
私は単純な一連のイベントを持っています:
- メタデータ テーブルから列を取得する (非同期)
- 選択した列をロードする (非同期)
- レンダリング リスト
以前はこれらの関数を連鎖させ、それぞれが完了すると次の関数を呼び出していました。ただし、何が起こっているのかはあまり明白ではありません (呼び出すgetColumnsFromMeta
と、ビューが取り込まれます)。したがって、明確さとコードの再利用のために、これらを使用してリファクタリングしたいと思いJQuery
Promises
ます。私は以前にプロミスを使用しました。しかし、どうすれば 2 つ以上連鎖させることができるでしょうか?getColumnsFromMeta ().then(loadSourceFromDatabase /*some arguments*/) //.then(renderList)?;
の例を次に示しgetColumnsFromMeta
ます。
jquery - .prependTo() は jQuery チェーンに従いますか?
私はプロジェクトを作成していますが、ある行には、チェックすると親を下に再配置するチェックボタンがあります。マークアップは次のとおりです。
コードは次のとおりです。
.subTask
divをdivに追加したい.subTaskWrapper
ので、else
最初にこれを試した場合:
この場合、divにdivを.appendTo
追加すると思いましたが、このエラーが発生しました:.subTask
.subTaskWrapper
キャッチされないエラー: HIERARCHY_REQUEST_ERR: DOM 例外 3
しかし、別のものを に追加.parent()
すると.appendTo($(this).parent())
、機能したので、
.appendTo($(this).parent().parent())
この Exception が最初のケースで生成される理由と、それが後に.appendTo
配置されたときにどのように影響を受けるかを知りたいです。.parent()
.parent()
$(this)