2011-08-11 10 views
0

子が選択されたときに、親がそのイベントをリッスンするときに、CHANGEDというカスタムイベントをトリガーさせることは可能ですか?親にイベントがバブリングすることによって可能ですか?子からのトリガーイベントがJqueryで親をリッスンします

私はそう呼ばれている人からのプラグインを持っています。 (#セレクタ).dropdown();

ドロップダウン内で選択リストが再作成されます。

<select id="selectBox"> 
    <option value="0">Select</option> 
    <option value="1">1</option> 
    <option value="2">2</option> 
    </select> 

は今のliセレクタの1つがクリックされたとき、私は以下のようなことから、イベントをトリガしたいが、親がそれを聞いています。親はslectBox要素を意味します。

// INSIDE PLUGIN 
    $("li", ul).click(function() { 
     $(this).trigger('CHANGED'); 
    }); 

    //IN MY PAGE CODE 
    $(function(){ 
     ('#selectBox').dropdown(); 
     ('#selectBox').bind('CHANGED', update); 

     function update(evt){ 
      alert(evt.target); 
     } 
    }); 
+0

。あなたの "INSIDE PLUGIN"ブロックはLI/UL要素を指しています...あなたは選択/オプションを意味するのでしょうか?選択ボックスにはLIが含まれていません。 –

+0

あまりにも速く働いて申し訳ありませんが、基本的にはそれをulにすることを意味しません。ulはul要素になります。 li要素のクリックが発生します – Chapsterj

答えて

0

だから、私はここにいくつかのコンテキストが欠けている必要がありますが、あなたは、イベントを作成することができれば、あなたは要素名を知っている、とあなたはそれが理由だけではなく、通常は別のイベントハンドラを追加し、実施したい場合は知っていますか?あなたのケースでは

$(function(){ 
     $('#selectBox').bind('change', update); 

     function update(evt){ 
      alert(evt.target); 
     } 
    }); 

http://jsfiddle.net/qruKH/

+0

これは当てはまりますが、ドロップダウンリストをスキンするカスタムプラグインです。したがって、元のli要素を隠し、元のhtmlに基づいて独自のリストを作成します。その理由は、カスタムリストがプラグインで作成され、そのうちの1つがクリックされたときにカスタムイベントを発生させる理由です。 – Chapsterj

0

の委譲機能が何であるかである:あなたのJSを経由して、あなたのHTMLと一致していない

<script type="text/javascript"> 
    $(document).ready(DocReady); 

    function DocReady() 
    { 
     $("#selectBox").delegate("option", "click", SelectClicked); 
    } 

    function SelectClicked() 
    { 
     alert("You clicked: " + this.text); 
    } 
+0

オプションとは何ですか?私のプラグインでは、li要素のイベントをトリガーしています。トリガーはプラグインで同じままですか? – Chapsterj

+0

オプションは、子要素の名前です。選択親には複数のオプションの子があります。 –

関連する問題