- 締切済み
jqueryについて質問です。
jqueryについて質問です。 過去こちらにお世話になりまして、一つの質問を解決していただきました。 しかしまた、わかったつもりになっていただけのようでして、再度問題が出てしまいました。 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=SHIFT_JIS" /> <meta http-equiv="Content-Script-Type" content="text/css" /> <link rel="stylesheet" type="text/css" href="main.css"></link> <script type="text/javascript" src="accordian.pack.js" charset="UTF-8"></script> <script type="text/javascript" src="jquery-1.3.2.min.js" charset="UTF-8"></script> <script type="text/javascript" src="smartsticky.js" charset="UTF-8"></script> <script type="text/javascript"> jQuery.noConflict(); jQuery(document).ready(function(){ new Accordian('basic-accordian',5,'header_highlight'); }); </script> このように記述しましたが、どちらも作動しないという状態になってしまいました。 smartsticky.jsが、元々は<SCRIPT>内に書かれていたものを、まとめて外部に出したような感じだとは思うのですが、それに対しての対処が思いつきません。見ての通りjQuery.noConflict();を使っても見たのですが、まるで効果なしです・・・ accordian.pack.jsとsmartsticky.jsをバッティングさせずに上手く同時に動かす手段はありますでしょうか? ちなみにこのページのscript自体はこの記事をのものです。 組み込みもこの記事を参考に行っています。 http://solidstate.jp/ContentsDisplay/floatingBox/script_147.html http://solidstate.jp/ContentsDisplay/accordion/script_130.html
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- yyr446
- ベストアンサー率65% (870/1330)
ライブラリーの相性云々というのは、そのライブラリーで使われる変数名や、機能拡張が 他に影響しないかどうか、あるいは仕組みが相互に矛盾して無いかによります。 ライブラリーの中には、ある機能を提供するためだけに特化して作られ、他との併用は 考慮されてないもの(もちろん考慮されている物もある)や、 アプリケーションフレームワークと称して、ブラウザー毎の違いを吸収して、便利機能 をJAVASCRIPTを拡張するような感じで、簡単に使えるように提供するベースとなるライブ ラリー(jQueryとかprototype.js、MooTools、Dojo...等) そのベースとなるライブラリーを使うのを前提として、特定の機能を提供するライブラリー(LightBoxとか、jCarouselとかGalleryview、....無数にある)、そのベースとなる ライブラリーを機能拡張するプログラム(プラグインと呼ばれる) とか、様々あります。 どれとどれの併用がまずいかは、少しはソースコードが読めて、動作原理が 理解できないと判定は難しいと思います。 そおいった、意味で例えば、jQueryを使うなら、jQueryを利用するライブラリー どおしを使えば、不具合が少なくなります。少なくなるだけです。 致命的な文法的なバッティングはなくなるでしょうが、仕組みが競合・矛盾してては どうしようもありません。
- yyr446
- ベストアンサー率65% (870/1330)
どうしてもとゆうなら、できましたけど。苦肉の策です。 smartsticky.jsは<script>で組み込みません。 jQuery.noConflict(); jQuery(document).ready(function(){ new Accordian('basic-accordian',5,'header_highlight'); の後に直接、$.をjQuery.に置き換えた上で張っ付けます。 張っ付けの最後の行は、 jQuery('#basic-accordian').stickyfloat({ duration: 400 }); と変えましょう。 その後、treeviewの初期かもやってしまって、 jQuery("#filetree").treeview({// ターゲットとなる要素に付加するID animated: "fast", //アニメーション設定(削除するとアニメ無し) collapsed: true, //開閉設定(削除するとロード時にメニューを全開) unique: true, //動作設定(削除すると自動的に閉じなくなる) persist: "cookie", //Cookie }); 最後にjQuery(document).ready(function(){を }); で閉じます。 すると、見事にアコーディオンがフローティングしながら、ついてきて、 開いたアコーディオン内の要素をクリックすると、ツリービューが出ました。 これで、3つ連結成功、でもほとんどお遊びで、あまり必要性ないような...
補足
貴方はこの前の!今回もありがとうございます。 <body>内に何も書いていないために、気を遣わせてしまいましたが、自分の目的(ここで語るのは場違いな気もしますが)は、左の固定メニューにアコーディオンメニューを、そのリンク先のページに拡張メニューとしてフローティングメニューを、と言う形なのです。(前回の件も、左の固定メニューに××を、リンク先のページの拡張メニューに〇〇というような狙いでした) 今回××と〇〇が変化したのは、その方が手間もかからないだろうし、ダブルクリックするならフローティングの方がいいだろうという考えです・・・ 今回相談に参ったのは、前回方法を教えていただいたので、これを参考にすれば好きなプラグインつけ放題ではないのか?と早とちりして手当たり次第つけようと思っていたら、つまづいたという形です。 同じプラグイン・・・正直最近サイトを見始めてjQueryを知った程度なので、さっぱりですが、相性のいいもの、と捉えてよろしいのでしょうか?となると、今自分のやっている事は、機能だけに注目して相性などをまったく考えていない素人の行動のような感じになるのでしょうか?
- yyr446
- ベストアンサー率65% (870/1330)
前に回答したものです。まだよくみてませんが、 この際、「accordian.pack.js」は捨ててしまいましょう! jQueryのプラグインライブラリーの中にもアコーディオンあります。 http://jqueryui.com/demos/accordion/ とか、 同じ系統のライブラリーだけ併用した方が幸せになれます。
お礼
なるほど、コード自体読めないと意味が無いわけですか。 以前のご解答でjQueryにアコーディオンメニューがあると教えていただいたので、それをベースに相性のいいフローティングメニューないしそれに代替するものを探してみようと思います・・・