0

特定の条件下でスクリプトを実行するためのこの句があります。

//if artist page clicked run profile script
if (id == 'artist_link') {
        $.getScript("AJAX/get_profile.js");
}

私が抱えている問題は、スクリプトが完全に実行されないことが多いことです。何も実行されないこともあれば、その一部のみが実行されることもあります。これ以上の詳細を提供することは本当にできません。ただし、奇妙な発生は、firebug が開いているときに常に完全に実行され、問題が見つからないことです。私がテストしたブラウザでこの問題が発生したのは、chrome と firefox です。

ファイルを含むjsfiddleget_profile.js

4

3 に答える 3

1

私は間違っている可能性がありますが、私の知る限り、$(location)有効な jQuery ではありません。$(location).attr('pathname')justに置き換えるとwindow.location.pathname、可能性のあるエラーが削除されます。

動作するかどうかに実際には影響しないはずですが、全体的な快適さを向上させるために言及する価値のあるその他の一般的な事項がいくつかあります。

  • dataJSON 呼び出しから返されるのは、配列ではなくオブジェクトです。DP表示画像の it の要素にアクセスするには、 data.DPnot data['DP']( name、および他のいくつかの要素についても同じ) を使用する必要があります
  • .click()は非推奨です。.on()代わりにイベントをバインドするために使用します
  • コレクション ( $.each (data, function(key, val){) をループしており、ループ内で DOM ( $.append()) を変更しています。代わりに、ループ中に HTML の文字列を構築し、ループの後に単一の追加で追加する方がよいでしょう。 DOM 挿入のパフォーマンスが遅い
  • 同じセレクターを複数回使用しているため (「 」を参照$('#origin'))、jQuery が毎回要素をルックアップする必要があります。それをキャッシュしてから、そのメソッドを呼び出します。
    • $origin = $('#origin');
  • または同じ要素への連鎖呼び出し:
    • $('#origin').html('a').append('b').append('c');
于 2012-10-29T23:39:21.867 に答える
0

それを修正しました!これが表示されなかった理由はわかりませんが、ページが ajax される前にスクリプトが ajax されていたため、スクリプトが機能しなくなりました。とにかく、少しいじって修正しました。助けてくれてありがとう!

于 2012-10-29T23:37:09.150 に答える
0

get_profile.js ファイルのどこかにバグがあることはほぼ 100% 確信しています。まったく実行されている場合、ファイルのロードに問題はありません。問題は js ファイルのどこかにあり、そこからコードを確認しないと実際にデバッグすることはできません。

于 2012-10-29T22:56:10.997 に答える