JQuery UI plugin not working in IE7?

Bad news first: We can’t fix your JS problem (at least as long as the errors come from the jQuery UI version shipped with core and not from your custom definitions). This is a WordPress core problem. When you look at the SVN trunk, especially the main (and only) PHP file in that folder, you will see that the plugin doesn’t even ship with any script… at least this is what I thought first. Then I found that it does register a script.

add_action( 'wp_enqueue_scripts', 'jquiw_enqueue_scripts' );

Point is, that I couldn’t find a script by searching for js (the file extension), because the plugin does the following:

function jquiw_initialize_scripts() {

        $options = get_option( 'jquiw_options' );

        /* If jQuery code text box not empty then add to header. */
        if ( ! empty( $options['txtar_jquery_code'] ) ) {
                echo "<script type=\"text/javascript\">\r\n";
                echo $options['txtar_jquery_code'] . "\r\n";
                echo "</script>\r\n";
        }

        /* If custom CSS text box not empty then add to header. */
        if ( ! empty( $options['txtar_override_css'] ) ) {
                echo "<style type=\"text/css\">\r\n";
                echo $options['txtar_override_css'];
                echo "\r\n</style>\r\n";
        }
}

As you can see, the JavaScript and the style definitions come from get_option( 'jquiw_options' ). And when we look at the rest of the plugin file, then we see that there is actually a <textarea name="jquiw_options[txtar_jquery_code]"> where you did enter the JavaScript. Not that it’s completely bad to save something like executable JavaScript into a DB, the really bad thing is when you don’t sanitize it:

function jquiw_init() {
        /* Make sure we always have a theme selected. */
        $tmp = get_option( 'jquiw_options' );
        if ( ! isset( $tmp['drp_jquery_theme'] ) ) {
                $tmp["drp_jquery_theme"] = 'smoothness';
                update_option( 'jquiw_options', $tmp );
        }
        register_setting( 'jquiw_plugin_options', 'jquiw_options' );
}

As you can see, there is nothing what holds anyone back from saving malicious code. In short: Drop that plugin, register the jQuery UI stuff you need yourself and write your own .js files that contain the definitions for the scripts.

Use the Dependencies API yourself – A quick guide/”How-To” for registering scripts and styles.

You can fetch the CSS via the Google CDN.

$theme="smoothness";
"//ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/themes/{$theme}/jquery-ui.css"

then simply add jQuery UI:

wp_enqueue_script( 'jquery-ui-core' );

on top of that, you just enqueue the plugins you want and add jquery-ui-core as dependency to get the right loading order:

wp_enqueue_script( 'jquery-ui-accordion', null, array( 'jquery-ui-core', ) );

Finally you register your definitions from within a custom file. There you avoid using all the stuff that the browsers you support don’t like.

Make sure to wrap that up in a custom plugin of your own.