- ベストアンサー
jQueryとAjaxの競合による要素の取得不具合の解決方法
- AjaxとjQueryを競合させているため、要素の取得ができない問題が発生しました。
- 競合を解消するために、Query.noConflict()を使用してjQueryの競合を回避しました。
- 要素の取得にはliveメソッドを使用し、値を取得する際は$('input').eq(input_no).val()と記述しましたが、折角使っているprototpye.jsを活用するために、$('edt_code')で取得したいと思っています。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
http://api.jquery.com/jQuery.noConflict/ >jQuery(document).ready(function($) { > // Code that uses jQuery's $ can follow here. > }); > // Code that uses other library's $ can follow here. noConflictをつかっても、jQueryのスコープ内における$はjQueryを指します。 jQueryではないライブラリの$(グローバル変数の$)を使う場合は、window.$を使用してみてください。
その他の回答 (1)
- fujillin
- ベストアンサー率61% (1594/2576)
よくわかってませんが… >AjaxとjQueryを競合させているため これは直接競合とかいうたぐいのものではないと思いますが? >折角portotype.jsを使っているので ご提示のコードはjQueryのコードではないでしょうか? portotypeとjQueryのコンフリクトを避けようとしているということ? Query.noConflict();で$関数は開放されているはずですが、ready(function($){で$を再定義しているのでこちらが用いられているはずではないでしょうか。 実引数を省略してあるので、何が入るのか実際に確認はしていませんが、この関数内では$はjQueryオブジェクトになっていませんか? 構文やメソッドはjQueryで、$だけprototypeでコードを書く方がむしろ難しいように思われます。 (って、jQueryでは$()オブジェクトは要素とは異なるので、動かない可能性が大ではないかと。)
お礼
お礼が遅くなってすみません。 やはりjQuery.や$.では出来ませんでした。 一番上位のオブジェクト(window)を使う事で、 直接IDを取得する事ができました。 尚、(document).ready(function(){については $でもなしでもできるようです。 参考http://semooh.jp/jquery/ref/cont/with_prototype/
補足
ご回答有難う御座います。 >Query.noConflict();で$関数は開放されているはずですが、ready(function($){で$を再定義しているのでこちらが用いられているはずではないでしょうか。 そうとは知りませんでした。 付け焼刃でjQeuryを使い、基本が出来ていないようです。 再定義しないで試してみます。 試してみて完成したらお礼を書き込みたいと思います。 有難う御座います。
お礼
ご回答有難うございました。 最上位のオブジェクト(window)を使う事で解決しました。 ただjQueryのval()は使えず、valueで取得できました。