私たちのサイトのいくつかのjsファイルに含まれている「ユーティリティ」js関数があったので、コードの繰り返しを減らすために、それをユーティリティファイルに移動し、すべてのjsファイルを変更してロードしてからで使用しましたgetScript
。これはほとんどの場合に機能しましたが、livequeryを使用する1つのコードで、エラーが発生します。
新しい関数を使用する必要がある場合は常に、正常に使用しているコード:
$.getScript("js/utilities.js", function(){
... use parseQueryString function ....
});
前のコード:
$('.preview')
.livequery(function(){
$(this).attr('rel','myPage.cfm?' + parseQueryString($(this).attr('rel')));
});
基本的に、「preview」のクラスを持つ要素がシーンに表示されるたびに、rel属性を解析して、新しく解析された文字列に置き換えます。
後のコード:
$('.preview')
.livequery(function(){
var preview = $(this);
// load utilities.js so that we can access the parseQueryString function
$.getScript("js/utilities.js", function(){
preview.attr('rel','myPage.cfm?' + parseQueryString(preview.attr('rel')));
});
})
$('.preview').livequery
問題は、これが呼び出しのコールバックを実行する前にループの次の反復に続くように見えることgetScript
です。したがって、preview
変数は、そのrel属性を適切な値に置き換える前にリセットされます。これを正しく実行するにはどうすればよいですか?