dポイントプレゼントキャンペーン実施中!

いつもお世話になっています。

以前にも質問した事があるのですが、
ちょっと違う事象が出てきたので、
質問させて下さい。

AjaxとjQueryを競合させているため下記のように記述しました。

Query.noConflict();
jQuery(document).ready(function($){
$("input").live("click",function(){
e = $(this).attr("id");
ev = e.substr(0,e.lastIndexOf('['));
if(ev == 'mod' || ev == 'refer' || ev == 'del'){
//一覧のレコードを取得
list_flg = 1;
fno = e.lastIndexOf('[')+1;
lno = e.lastIndexOf(']');
no = e.substr(fno,(lno-fno));

//hidden位置取得
input_no = (no == '1') ? 0 : parseInt(no) + 6;

//hiddenの値取得
code = ($("input").eq(input_no).val());


}
else if(e == 'insert' || e == 'update' || e == 'delete'){ //DB登録時
//新規・編集確認画面からの遷移時
db_flg = 1;
ev = e;
code = $('input').eq(0).val();
if(ev == 'update' || ev == 'delete'){
//編集及び削除時はdefault_codeで既存codeのエラーチェックを行う
default_code = $('input').eq(1).val();
}
}

}
}

下記の記述をしないと値がとれないのです。
code = $("input").eq(input_no).val();

本当なら下記のように記述したいのですが、駄目でした。
code = $('edt_code').val()

document.getElementById('edt_code').value
とすれば取れるのですが、折角portotype.jsを使っているので、
$('edt_code')としたいのです。
尚、日本語リファレンスに記述している事もやった結果です。

またjqueryはinnerHTMLで記述したもので取得するため、liveメソッドを使用しています。

どうかご教授願えないでしょうか。

A 回答 (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.$を使用してみてください。
    • good
    • 0
この回答へのお礼

ご回答有難うございました。

最上位のオブジェクト(window)を使う事で解決しました。
ただjQueryのval()は使えず、valueで取得できました。

お礼日時:2012/01/28 15:21

よくわかってませんが…




>AjaxとjQueryを競合させているため
これは直接競合とかいうたぐいのものではないと思いますが?

>折角portotype.jsを使っているので
ご提示のコードはjQueryのコードではないでしょうか?
portotypeとjQueryのコンフリクトを避けようとしているということ?

Query.noConflict();で$関数は開放されているはずですが、ready(function($){で$を再定義しているのでこちらが用いられているはずではないでしょうか。
実引数を省略してあるので、何が入るのか実際に確認はしていませんが、この関数内では$はjQueryオブジェクトになっていませんか?

構文やメソッドはjQueryで、$だけprototypeでコードを書く方がむしろ難しいように思われます。
(って、jQueryでは$()オブジェクトは要素とは異なるので、動かない可能性が大ではないかと。)

この回答への補足

ご回答有難う御座います。

>Query.noConflict();で$関数は開放されているはずですが、ready(function($){で$を再定義しているのでこちらが用いられているはずではないでしょうか。

そうとは知りませんでした。
付け焼刃でjQeuryを使い、基本が出来ていないようです。

再定義しないで試してみます。

試してみて完成したらお礼を書き込みたいと思います。

有難う御座います。

補足日時:2012/01/23 13:24
    • good
    • 0
この回答へのお礼

お礼が遅くなってすみません。

やはりjQuery.や$.では出来ませんでした。
一番上位のオブジェクト(window)を使う事で、
直接IDを取得する事ができました。

尚、(document).ready(function(){については
$でもなしでもできるようです。

参考http://semooh.jp/jquery/ref/cont/with_prototype/

お礼日時:2012/01/28 15:20

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!