2012-01-17 6 views
1

私のウェブサイトでは、AJAXを使用して別のページからデータを取り出し、ローカルに表示しています。 jQuery.get()を使用して外部ページを取得し、jQuery.find()を使用して必要なデータを取得します。 IE、FF、Opera、Safariでは正常に動作しますが、Chromeでは失敗します。データをトレースすると、外部ページデータが返されていることがわかります。これは失敗しているfind()関数です。これは次のようになります。jQuery find()はChromeでうまく再生できません。何か案は?

var f = $(data).find('h5 > a'); 

私はいくつかの検索を行い、これについてはあまり見ていません。誰かがデータタイプの問題であると述べたため、get()ajax()というステートメントに変更し、dataTypeを 'text'に変更しましたが、まだChromeでは失敗しています(他のすべてではまだ動作しています)。

これを修正する方法についてのご意見はありますか?

+0

'data'の値を指定できますか?'find'がクロムの中で異なって機能するのは奇妙に思えます。 –

+0

jQueryのどのバージョンを使用していますか? Xドメインの制限をバイパスしようとしていますか?一見すると、無効なHTMLがあり、Chromeは他のブラウザとは違ったレンダリングをしています( 'h5> a'はfalseです)。 – Matt

+3

コードは1000語に置き換わります。 –

答えて

1

それはあなたが

var htmlContent = '<html><body><div class="toto">Hello World!</div></body></html>'; 
$(htmlContent).find('.toto'); // length = 0 
$('<div>' + htmlContent + '</div>').find('.toto'); // length = 1 

を記述する場合、私が知っている唯一の回避策は、divタグであなたのHTMLマークアップを配置することであるjQueryの

で奇妙なグリッチです。

$('<div>' + myHtml + '</div>') 
0

var f = $(data).find( '> h5> a');

P.S.データの価値を投稿することができれば便利です

0

すべての助けをいただきありがとうございます。それが価値あるものについては、それはまだクロームの奇妙なものです。そして、「データを見ることができますか?」と言った人々のために、私はそれを提供することができなかったのは残念ですが、できれば多くの助けになりました。とにかく、このソリューションはfind()ルーチンとは関係がありませんでしたが、セレクタと何か関係がありました。

短い話ですが、ページにはブレッドクラムコントロールがあります。現在のページにつながったページへのリンクがあるため、ブレッドクラムは何が起こっているかの鍵であり、それは私たちが到達する必要のあるリンクの1つです。私は、カテゴリページからデータを取得する必要が

ホーム>カテゴリ>製品

:だから典型的なブレッドクラムは次のようになります。 IE、FFなど、他のすべてのコードでは、次のようになります。

var categoryName = $( '#ctl00_breadcrumbContent span:nth-​​child(3)> a').html();

Chromeでは、このセレクタが間違った子を取得します。ただし、Chromeでは、次のように動作します。

var categoryName = $( '#ctl00_breadcrumbContent span:nth-​​child(2)> a').html();

(私たちは、ない第三第二子をつかんでいる)

わからないがChromeが異なっ子供をカウントし、なぜ?クロムは0から数えているようですが、他のブラウザは1から数えていますか?私のことをちょうど推測する。とにかく、Chromeは間違ったURLを取得していたので、返されていたページは私が探していたものではありませんでした。これは、Chromeの存在を検出して補正することで修正されました。

関連する問題