2012-07-04 86 views
0

我正在使用this多選jQuery組件。我無法想象如何觸發和訂閱這件事的事件。 (我是js的新手)。jQuery UI多選事件

我一直在努力,到目前爲止是觸發在ui.multiselect.js文件_updateCount功能collectionChanged事件:

_updateCount: function() { 
     this.selectedContainer.find('span.count').text(this.count + " " + $.ui.multiselect.locale.itemsCount); 

     //How do I subscribe to the event? 
     $(this).trigger('collectionChanged'); 
    } 

然後我想訂閱「collectionChanged」從asp.net事件:

$('#<%= dropDown.ClientID %>').bind('collectionChanged', function() 
    { 
     alert("Changed!"); 
    }); 

所生成的頁面標記是這樣的:

<select name="ctl06$dropDown" id="ctl06_dropDown" class="multiselect" multiple="multiple" name="countries[]"> 
     <option value="1134">A</option> 
     <option value="1980">B</option> 
     <option value="17789">C</option> 
     <option value="180367">D</option> 
     <option value="1990673">E</option> 

    </select> 

<script type="text/javascript"> 
$(function() { $('.multiselect').multiselect(); }); 

$('#ctl06_dropDown').bind('collectionChanged', function() 
{ 
    //Not working (never triggerd) 
    alert("Changed!"); 
}); 

</script> 

Ť漢克斯。

回答

2

this_updateCount函數的值不是DOM元素。對於你想要做的事情,如果我理解你的話,你需要在DOM元素中觸發你的自定義事件,然後在同一個DOM元素上監聽這個自定義事件。所以,你的代碼有兩個問題:第一個問題是你試圖使用$(this)this來觸發一個事件並不是你期望的,第二個是你正在監聽DOM元素上的一個事件,它從不觸發那個事件。如果你這樣做:

_updateCount: function() { 
    this.selectedContainer.find('span.count').text(this.count + " " + $.ui.multiselect.locale.itemsCount); 
    $("#ctl06_dropDown").trigger("collectionChanged"); 
} 

那麼該訂單$('#ctl06_dropDown').bind('collectionChanged'...應該正常工作。

+0

是的,就是這樣。非常感謝。 –