jQueryライブラリを必要とするjSliderを使用する必要があるため、prototype.jsとjQuery.jsの間の$競合を解決しようとしています。
jquery.jsファイルの最後にjQuery.noConflict()を追加し、次にjslider.jsファイルで$._roundNumberをjQuery._roundNumberに変更します。それでも、jQuery._roundNumberは関数ではないというエラーが表示されます。助けてください。
jQueryライブラリを必要とするjSliderを使用する必要があるため、prototype.jsとjQuery.jsの間の$競合を解決しようとしています。
jquery.jsファイルの最後にjQuery.noConflict()を追加し、次にjslider.jsファイルで$._roundNumberをjQuery._roundNumberに変更します。それでも、jQuery._roundNumberは関数ではないというエラーが表示されます。助けてください。
プロトタイプとjqueryを統合する例を次に示します...正しいことをしたかどうかを確認してください。
<script src="prototype.js"></script>
<script src="effects.js"></script>
<script src="jquery.js"></script>
jQuery.noConflict();
jQuery(document).ready(function($){
jQuery("a").click(function(){
Effect.Shake('shake_demo');
});
});
<div id="shake_demo" style="width:150px; height:40px; background:#ccc; text-align:center;">
<a href="#" style="line-height:40px;">Click me to shake!</a>
</div>
そして今、数を丸めるために、あなたはこのコードを使うことができます:
var txt=jQuery('#txtBox').val());
var amt = parseFloat(txt);
alert(amt.toFixed(2);
https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Number/toFixed
修理済み。jQuery.noConflict()が機能しなかった理由は、現在のページに含めていたテンプレートページでjQueryがすでに使用されていたため、問題が2つあることに気づきました。
デフォルトのjQueryセレクターである「$()」は、Tapestryにデフォルトで含まれているprototype.jsと衝突していました
jquery.new.jsファイルの最後にjQuery.noConflict()を追加し、セレクターとして「jQuery()」を使用しようとすると、jqueryのバージョンが異なるため(これをjquery.old.jsと呼びましょう)、どちらも機能しませんでした。 )はすでにテンプレートページ(現在のページに含まれていました)に含まれていました。jquery.old.jsをprototype.jsで動作させるために、前の開発者はすでにjQuery.noConflict()を使用していたため、「jQuery()」セレクターもすでに使用されていました。
修正: jquery.new.jsファイルの最後に$ j2 = jQuery.noConflict()を追加し、jSliderを使用する新しいライブラリで「$ j2()」セレクターを使用し、jSliderのセレクターも変更しました。 jsファイル。今ではすべてうまく機能しています。
古いjqueryバージョンを使用するテンプレートページがサイト全体で使用されているため、jquery.new.jsファイルとjquery.old.jsファイルの両方を(1つだけではなく)プロジェクトに残しています(テストしたくない)これを変更した後のサイト全体)私が追加する新しいコンポーネントには、新しいバージョンのjquery(jquery.new.js)ファイルが必要です。そして、はい、jsライブラリファイルの最後ではなく、htmlページの上部にnoconflictコマンドを追加する方が良いことを知っています-スタックオーバーフローでのこの更新後に変更されます:)