Look here for updated code.

May 21, 2013 at 10:41 PM
Thanks to the author for the original code.

1) Requirement: Have jQuery 1.7+ or 2.0+ already referenced in your web code (I put mine in head of my Master Page - but you can use a ScriptManager if you like)

2) DropDownCheckBoxes.cs - Lines 25 and 149: change the default value for AddJQueryReference to "false". This keeps it from spitting out a copy of jQuery 1.6.1 into your website.

3) DropDownScript.js - Lines 6 through 12: Remove the "hitch" function altogether.

4) DropDownScript.js - multiple lines: Replace "unbind" with "off" -- example:
div.unbind("click.chk_dd");
-becomes-
div.off("click.chk_dd");
5) DropDownScript.js - multiple lines: Replace "hitch" with "on" and "proxy" -- example:
div.hitch(
    "click.chk_dd",
    this.divClickHandler,
    this
);
-becomes-
div.on(
    "click.chk_dd",
    $.proxy(
        this.divClickHandler,
        this
    )
);
6) DropDownScript.js - Lines 207 and 211: Replace "attr" with "prop" -- example:
this.getItems().attr("checked", true);
-becomes-
this.getItems().prop("checked", true);
7) Now take all the DropDownScript.js code and run it through a minimizer (I've been using http://jscompress.com/) and save the results into DropDownScript.min.js (which is the actual script file spit out to your website)

Done.

If you want to take the time to remove the jQuery embedded reference, that's fine - but this was the fewest changes needed.

Please send me a thanks if this helped you out.
Jul 2, 2016 at 6:38 PM
Many thanks for these amendments - exactly what I was looking for!

I will add one more here:
  • Assumption: The control is AutoPostBack="true"
  • Problem: When user selects or deselects check boxes and then clicks anywhere outside the control, a post back (OnSelectedIndexChanged) is automatically triggered. However when, instead, the user clicks the control box (the upper part of the control), or the down-arrow area, the post back is not generated.
  • Solution: Locate the following piece of code (around line 68):
    this.selectBoxClickHandler = function (e) {
        if (this.visible) this.hide();
        else {
            this.show();
            this.preventHide = true;
        }
    }
change it to:
    this.selectBoxClickHandler = function (e) {
        if (this.visible) {
            this.hide();
            this.doPostBack(); 
        }
        else {
            this.show();
            this.preventHide = true;
        }
    }
Thanks, hope you will find it useful!