2011-08-11 33 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

选项是子元素的名称。选择父项有多个选项子项。 –

相关问题