Dropdown-Abschneidung in IE 7 beheben

Avatar of Chris Coyier
Chris Coyier am

Führen Sie (zumindest den Teil „Usage“ unten) aus, nachdem Sie jQuery geladen haben, entweder am Ende der Seite oder in einer DOM-Ready-Anweisung. Beachten Sie, dass dieser Fix eine Kopie des Select-Elements erstellt, die mit den Formulardaten übermittelt wird, aber der Name-Wert wurde geändert, um „-clone“ am Ende hinzuzufügen. Seien Sie sich dessen bewusst, insbesondere wenn Sie alle Eingaben serialisieren.

Danke an Craig Hoover.

// Safely use $
(function($) {

	$.fn._ie_select=function() { 
	
		return $(this).each(function() { 
		
			var a = $(this),
			    p = a.parent();
		
			p.css('position','relative');
		
			var o = a.position(),
			    h = a.outerHeight(),
			    l = o.left,
			    t = o.top;
		
			var c = a.clone(true);
		
			$.data(c,'element',a);
		
			c.css({
				zIndex   : 100,
				height   : h,
				top      : t,
				left     : l,
				position : 'absolute',
				width    : 'auto',
				opacity  : 0
			}).attr({
				id    : this.id + '-clone',
				name  : this.name + '-clone'
			}).change(function() {
				$.data(c,'element')
					.val($(this).val())
					.trigger('change')
			});
				
			a.before(c).click(function() { 
				c.trigger('click');
			});
		
		}); // END RETURN
	
	}; // END PLUGIN
        
        // Usage
	if ($.browser.msie) {
		$('select')._ie_select();
	}

})(jQuery); // END SAFETY