• 締切済み

jqueryを用いたオブジェクトの取得

以下のようなhtmlを考えます。 //ここから <div id="hoge"> … </div> <div id="button" type="button"> … </div> $('#hoge').test(); //(1) //ここまで ここで(1)でtestというプラグインを$('#hoge').test()で呼び出しました。 このプラグインtestの中において、ボタンを押した際「こんにちは」とポップするイベントを記述したいと思っています。 このとき、testプラグイン中で var button = $('#button'); button.bind("mousedown",alert("こんにちは")); と書いたのですが、うまくいきませんでした。 どうやらbuttonオブジェクトは、元のhtmlではなく#hoge中の中から探そうとしているようです。 調べてみたところ、$()の第二引数にコンテキストを指定すればいいかもしれませんが、うまくいきません。 どなたかうまい方法を教えて下さい。

みんなの回答

  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.1

こんにちは。 <div id="button" type="button"> ・・・・ </div> とありますが<div>にtypeは無いと思います。 <button id="button" type="button"> ・・・ </button> ってことでしょうか? プラグインで用意されているtest()の内容がわからないのですが以下のスクリプトでは取得できています。 (HTMLは<div id="button">button</div>としてます) <div id="hoge"> div hoge <p id="foo">foo</p> <p id="bar">bar</p> </div> <div id="button">button</div> ==== js $('#hoge').test(); ==== プラグイン (function(jQuery) { jQuery.fn.test = function ( options ) { var options = jQuery.extend ({ bk : '#ccc', fk : '#fff', bbk : '#666', bfk : '#fff', }, options ); return this.each(function() { // プラグインとして呼ばれた要素のスタイルを変更 // 背景#ccc,前景#fffとなればOK jQuery(this).css ({ backgroundColor:options.bk, color:options.fk }); // #button要素を取得してイベントとCSSを設定 var btn = jQuery('#button'); btn.mousedown ( function() { alert ( 'こんにちは' ); }).css ({ color:options.bfk, backgroundColor:options.bbk }); }); }; })(jQuery);

noname#182748
質問者

お礼

解答ありがとうございました。 参考になりました。

関連するQ&A