2

Chrome で奇妙な問題に直面しています。w3c 標準に従って開発されていないページでこの問題を修正しようとしています。ほぼ 1000 以上の w3c の問題と言えます。

エラーは、ajax 呼び出しの前に正常に動作している「onclick」関数にあります。ajax 呼び出しの後、コンテンツがフィルター処理されます (onclick のリンクを含む)。関数は .show() コンテナーと .hide() 別のコンテナー用であり、初期ロード時に正常に機能しています。しかし、リンクが ajax を使用して更新された後、.show() と hide() は機能しません (ブラウザーに視覚的に変化はありません)。しかし、関数呼び出しは ajax の後でもうまく行われていることがわかりました。関数でアラートを提供して、これをテストしました。しかし、関数内の .show() と hide() は発生していません。

リンクを右クリックして要素を検査すると、関数の show() と hide() が正常に機能するという奇妙な動作が 1 つ見つかりました。

Safari、IE、Firefox などでは問題ありません。問題は Chrome のみです。

ここの専門家がこの問題を解決するのに役立つことを願っています。

ここにコード:

HTML

<a href="javascript:void(0);" onclick="swap(1)" >Show hotels in area</a> 
<a href="javascript:void(0);" onclick="swap(2)">Show hotels on map</a>

<table border="0" cellpadding="0" cellspacing="0">
<tr id="hotelArea" style="display: none">
<td>
<!-- Hote Area Content here -->
</td>
</tr>
<tr id="hotelsMap" style="display: none">
<td>
<!-- MAP Content here -->
</td>
</tr>
</table>

html の後の Javascript (これはページの下部にあります):

function swap(n){
if(n==1){
$('#hotelsMap').hide('slow');
$('#hotelArea').show('slow');
}
if(n==2){
$('#hotelArea').hide('slow');
displayHotelsOnMap();
$('#hotelsMap').show('slow');
}
}

また、インラインの onclick の代わりに .live(click) を使用しようとしましたが、同じ問題が発生しました.... よろしくお願いします -sunil

4

2 に答える 2

0

デバッグの目的で、ajax 呼び出しの後に js スクリプトを再実行してみてください。JavaScript を .js ファイルに入れて、次のように再実行します。

 $(document).ready(function(){
       //your ajax call
       $.getScript("yourjs.js");
 });
于 2015-02-11T09:29:51.247 に答える
0

より良い JavaScript リンクを使用して、副作用を排除します。アンカーを span 要素に置き換えてvoid() 関数の競合を回避し、onclick をjQuery .clickイベントに移動します。

于 2012-05-16T06:05:03.760 に答える