2012-03-09 6 views
3

は、私は今、私は、次のURLからjQueryのスクリプトをインポートしています。.. Software AGのwebMethodsの開発IDEでjQueryのコントロールを使用しようとしている:

http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js

私はwebMethodsのIDEによって配備ページを実行し、I (2つの青色の矢印の間)複数のブラウザに次のエラーを取得:

enter image description here

途中でエラーが通常のエラー、私は取得しています(横に青い矢印がすなわちエラー)です、何かがあるから他の '$'ユーザが '$'記号のコントロールを持っているので、他の '$'ユーザも混乱してしまいます。

これを確認する

は、ここで私がやったことだ:

私はその.id関数はjQueryのニーズに制御のクライアント側のIDを返します。.. CAF.modelの内部の使用を心配しないでください(次のJavaScriptコードを書きました

alert($(CAF.model("#{activePageBean.clientIds['txtDateInput']}").id).val()); 

...これは、上記の「getAttribute」エラーのもう1つのエラーが発生しました。

jQuery.noConflict(); 
alert(jQuery(CAF.model("#{activePageBean.clientIds['txtDateInput']}").id).val()); 

をし、エラーはありませんでした..:

私は、試してみました!

また、私は、コードを使用する場合:

jQuery.noConflict(); 
alert($(CAF.model("#{activePageBean.clientIds['txtDateInput']}").id).val()); 

それが下の青い矢印エラーが発生:「$」記号を使用して、他のエンティティが関数「valが」何であるかを把握することはできませんので.. 。

jQueryのスクリプトは、おそらくそこに自身が使用するために「$」記号を使用しているためエラーがあることを私に上記の確認を...今

がしようとすると、これを解決するために、私は前に別のスクリプトブロック を追加してみましたスクリプトブロックjQueryの独自のスクリプトファイルを呼び出して、このコードに入れる:

jQuery.noConflict(); 

そして、これが最初の青い矢印のエラーが発生しました:..「jQueryのは」理にかなっているドキュメントに記載されている、これは早期に定義されていません。

基本的に、私は何とかメインのjQueryスクリプトファイルに '$'記号を使わないように指示する必要があります。どうすればいいですか?

+1

最初のエラーは、jQueryが正しくロードされていないことを意味しますか? – Smamatti

+0

jQueryをどのように "インポート"しますか? –

答えて

2

jQuery.noConflict();は、jQueryがロードされた直後にスクリプトブロックで実行する必要があります。

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 
<script type="text/javascript"> 
    var jq = jQuery.noConflict(); 
</script> 
jq

代わりの$に上記エイリアスのjQuery。

jQueryへのプラグインはjQueryオブジェクトを通過し、内部では$にエイリアスしますが、スコープはグローバルではないため、プラグインで変更する必要はありません。

+0

"は、jQueryがロードされた直後にスクリプトブロック内で実行する必要があります。 - >これは私のためにそれを修正しました:) – Ahmad

0

jQueryの内部について心配する必要はありませんが、どちらの場合でも動作します。

最後のエラーメッセージは、jQueryオブジェクトではなく、DOM要素でjQueryメソッド(.val())を呼び出そうとしていることを意味します。

あなたは既にエラーで

$(CAF.model("#{activePageBean.clientIds['txtDateInput']}").id) 

結果はなぜjQuery.noConflict()変更これを呼び出す必要があることを知っていますか?

jQuery.noConflict()は、単に「リリース」$を解放し、それまで持っていた値を戻します。

あなたはどちらかあなたのコード全体jQueryを使用するか、別の変数に代入、例えばする必要があります。

var $j = jQuery.noConflict(); 
$j(CAF.model("#{activePageBean.clientIds['txtDateInput']}").id); 

readyイベントハンドラはまた、最初のパラメータとしてのjQueryへの参照を受け取るので、あなた(とすべきです)

jQuery(function($) { 
    // $ will refer to jQuery 
}); 

しかし、それはあなたが$がその関数の外側で参照するものは何でもに値にアクセスできません。そこにすべてのあなたのjQueryのコードを置きます。

0

これを行うには良い方法は、このように、自己実行機能を使用することです:

(function ($) { 

    // Your jQuery code here - just use $ as normal! 
    $("#coolselector").cooljQueryPlugin(); 

})(jQuery); 

は、ページの読み込みを高速化するために、ちょうど終了bodyタグの前に、あなたのコード内のことを入れてください。 CAFとPrototypeではスピードアップに気付かないでしょう:)

+0

うわー、これはとても奇妙です。私はこの答えを読んで、それが良いと思った、そしてそれが私がそれを書いたことを実感した。どのようにナルシシズム!これを二重に書きます。 –

関連する問題