1

私は私のcoffeescriptにこのコードのチャンクを持っています:

$('.asdasd').ready ->
  $.ajax '/splunk/100000000',
  type: 'GET'
  cache: false
  success: (html) ->
    $('.splunk_results').append html

div すら存在しませんが、asdasd私のコンソールでは、/splunk/10000000 への呼び出しが行われているのがわかります。なぜですか?

編集:

この問題は、問題の div が最初のページにロードされていないという事実に関係しているのではないかと思います。ページはパーシャルでいっぱいであり、DOM を変更する別の js ボタンをクリックするだけで div がロードされます。 . 私は基本的に、その div がいつ存在するかを確認したいと考えています。存在する場合は、新しいリクエストを作成し、そのリクエストの結果を div に入力します。

4

2 に答える 2

3

(質問の編集に応じて大幅に編集されました)

.readyドキュメントに対してのみ有効なイベントです。 jQuery のドキュメント forready$ doesn't は、引数 to is notの場合の動作を定義していませんdocument。とはいえ、思い通りに動作するイベントを定義することを妨げるものは何もありません! 準備完了イベントをリッスンするのではなく、カスタム イベント (たとえばreadyForSplunk) を作成し、適切なタイミングでトリガーします。

ドキュメント、または作成される div のより近い親には、イベントasdasdをリッスンするデリゲート ハンドラーが必要です。divreadyForSplunkを作成する js ボタンも新しい div にする必要があります。asdasdtriggerHandler('readyForSplunk')

于 2012-07-19T18:02:27.910 に答える
1

readyDOMの準備ができたときに実行されます。問題の要素がページにある場合にのみ実行したい場合は、代わりに次のようにすることができます。

_get = ->
  $.ajax '/splunk/100000000',
    type: 'GET'
    cache: false
    success: (html) ->
      $('.splunk_results').append html

$('.asdasd').each ->
  _get()
  _get = ->
于 2012-07-19T18:04:16.990 に答える