10

でプルする完全な HTML ドキュメントが$.ajax()あり、.done()コールバックは次のようになります。

function (data, text_status, jq_xhr) {
  var $what_i_want = $(data).find('#what-i-want');
}

wheredataは整形式の HTML ドキュメント全体を含む文字列です。このコードは決して到達しません.find()

$(data)、私は得る:

`Uncaught Error: Syntax error, unrecognized expression: <!DOCTYPE html>`...

事実:

  • jQuery 1.9.0 を使用しています
  • このドキュメントは、W3C バリデーターによる整形式の HTML5 です。

私はjQuery()多くの HTML 文字列をオブジェクト化していたので、これが機能していないことに驚いています。確かに、ドキュメント全体を試した覚えはありません。エラーを考えると、おそらく、この文字列を何らかの形でエスケープする必要があると思います。しかし、どうすればよいかわかりません。

ちなみに、これは機能します:

var $what_i_want = $('#what-i-want', $.parseHTML(data))

しかし、最初のアプローチが失敗する理由がわかりません。

4

2 に答える 2

2

DOCTYPE は通常の html タグではありません。削除する必要があると思います。

bodyドキュメント全体を別のドキュメントに埋め込むことはできないため、同様に問題が発生する可能性があります。IIRC jquery の内部メソッドは、その場でスパンを作成し、innerHTML を更新するだけです。

于 2013-02-27T03:12:57.447 に答える