2011-08-11 31 views
0

是否有可能讓孩子在選擇時觸發一個名爲CHANGED的自定義事件,但讓父母監聽該事件。是否有可能通過事件冒泡到父母觸發來自孩子的事件,但讓父母在Jquery中偵聽它

我有一個像這樣調用的人的插件。 (#selector).dropdown();

在下拉菜單中,它重新創建一個選擇列表。

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

現在,當點擊了李選擇之一,我想從觸發像下面的事件,但有家長聽它。 Parent意思是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

您的JS沒有你的HTML的方式相匹配。你的「INSIDE PLUGIN」塊指的是LI/UL元素......也許你的意思是選擇/選項?選擇框不包含LI。 –

+0

對不起,這工作太快,並不是說要把那裏基本上ul將是ul元素。點擊會發生在李元素 – Chapsterj

回答

0

所以,我必須在這裏失去了一些背景,但如果你可以創建一個事件,你知道元素名稱,你知道當你想要它執行的,爲什麼不添加其他事件處理程序是否正常?

你的情況:

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

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

http://jsfiddle.net/qruKH/

+0

這是真的,但它是一個自定義插件,皮膚下拉列表。所以它隱藏了原始的li元素,並根據原始的html創建了自己的列表。這就是爲什麼當在插件中創建自定義列表並且其中一個被點擊時,我想引發一個自定義事件。 – Chapsterj

0

即委託函數是什麼:

<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

選項是子元素的名稱。選擇父項有多個選項子項。 –

相關問題