0

このMultiselect jquery コンポーネントを使用しています。そして、このことのイベントをトリガーしてサブスクライブする方法がわかりません。(私はjsが初めてです)。

私がこれまで試してきたことは、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');
    }

次に、asp.net から「collectionChanged」イベントをサブスクライブしようとしています。

  $('#<%= 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>

ありがとう。

4

2 に答える 2

2

this関数のの値は_updateCountDOM 要素ではありません。あなたがやろうとしていることについて、私があなたをよく理解しているなら、DOM要素でカスタムイベントをトリガーし、同じDOM要素でそのカスタムイベントをリッスンする必要があります。したがって、コードには 2 つの問題があります。最初の 1 つは、使用してイベントをトリガーしようとしていて、期待したもの$(this)thisはないことです。2 つ目は、そのイベントを決してトリガーしない DOM 要素でイベントをリッスンしていることです。 . 次のようなことをすると:

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

その後、回線は正常に機能する$('#ctl06_dropDown').bind('collectionChanged'...はずです。

于 2012-07-04T06:47:56.847 に答える
1

使用しているプラ​​グインはイベントをサポートしていません。

次のバージョンを使用してください。 http://quasipartikel.at/multiselect_next/

イベントがhttp://quasipartikel.at/multiselect_next/#optionTabs-3のサンプル コードで説明されている場合

「選択済み」と「選択解除済み」の両方のイベントを使用する必要があります。

于 2012-07-04T06:59:18.403 に答える