jQuery.unique( data ) : data );
},
- clone: function(deep) {
- deep = deep != undefined ? deep : true;
+ clone: function() {
var $this = this.add(this.find("*"));
if (jQuery.browser.msie) {
// Need to remove events on the element and its descendants
// Do the clone
var r = this.pushStack( jQuery.map( this, function(a){
- return a.cloneNode( deep );
+ return a.cloneNode( true );
}) );
if (jQuery.browser.msie) {
}
// copy form values over
- if (deep) {
- var inputs = r.add(r.find('*')).filter('select,input[@type=checkbox]');
- $this.filter('select,input[@type=checkbox]').each(function(i) {
- if (this.selectedIndex)
- inputs[i].selectedIndex = this.selectedIndex;
- if (this.checked)
- inputs[i].checked = true;
- });
- }
+ var inputs = r.add(r.find('*')).filter('select,input[@type=checkbox]');
+ $this.filter('select,input[@type=checkbox]').each(function(i) {
+ if (this.selectedIndex)
+ inputs[i].selectedIndex = this.selectedIndex;
+ if (this.checked)
+ inputs[i].checked = true;
+ });
// Return the cloned set
return r;
},
val: function( val ) {
- return val == undefined ?
- ( this.length ? this[0].value : null ) :
- this.attr( "value", val );
+ if ( val == undefined ) {
+ if ( this.length ) {
+ var elem = this[0];
+
+ // We need to handle select boxes special\r if ( jQuery.nodeName(elem, "select") ) {\r var index = elem.selectedIndex,
+ a = [],
+ options = elem.options,
+ one = elem.type == "select-one";
+
+ // Nothing was selected\r if ( index < 0 )
+ return null;\r
+
+ // Loop through all the selected options\r for ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) {
+ var option = options[i];\r if ( option.selected ) {\r // Get the specifc value for the option\r var val = jQuery.browser.msie && !option.attributes["value"].specified ? option.text : option.value;
+
+ // We don't need an array for one selects\r if ( one )
+ return val;
+
+ // Multi-Selects return an array\r a.push(val);\r }\r }
+ \r return a;
+
+ // Everything else, we just grab the value\r } else
+ return this[0].value.replace(/\r/g, "");
+ }
+ } else
+ return this.attr( "value", val );
},
html: function( val ) {
return this.pushStack( Array.prototype.slice.apply( this, arguments ) );
},
- map: function(fn){
+ map: function(fn) {
return this.pushStack(jQuery.map( this, function(elem,i){
return fn.call( elem, i, elem );
}));
},
+
+ andSelf: function() {
+ return this.add( this.prevObject );
+ },
- domManip: function(args, table, dir, fn){
+ domManip: function(args, table, dir, fn) {
var clone = this.length > 1, a;
return this.each(function(){
} else if (elem.currentStyle) {
var newProp = prop.replace(/\-(\w)/g,function(m,c){return c.toUpperCase();});
ret = elem.currentStyle[prop] || elem.currentStyle[newProp];
+
+ // From the awesome hack by Dean Edwards
+ // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291
+
+ // If we're not dealing with a regular pixel number
+ // but a number that has a weird ending, we need to convert it to pixels
+ if ( !/^\d+(px)?$/i.test(ret) && /^\d/.test(ret) ) {
+ var style = elem.style.left;
+ var runtimeStyle = elem.runtimeStyle.left;
+ elem.runtimeStyle.left = elem.currentStyle.left;
+ elem.style.left = ret || 0;
+ ret = elem.style.pixelLeft + "px";
+ elem.style.left = style;
+ elem.runtimeStyle.left = runtimeStyle;
+ }
}
return ret;
// Convert html string into DOM nodes
if ( typeof arg == "string" ) {
+ // Fix "XHTML"-style tags in all browsers
+ arg = arg.replace(/(<(\w+)[^>]*?)\/>/g, function(m, all, tag){
+ return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area)$/i)? m : all+"></"+tag+">";
+ });
+
// Trim whitespace, otherwise indexOf won't work as expected
var s = jQuery.trim(arg).toLowerCase(), div = doc.createElement("div"), tb = [];
// IE elem.getAttribute passes even for style
else if ( elem.tagName ) {
- if ( value != undefined ) elem.setAttribute( name, value );
+ if ( value != undefined ) {
+ if ( name == "type" && jQuery.nodeName(elem,"input") && elem.parentNode )
+ throw "type property can't be changed";
+ elem.setAttribute( name, value );
+ }
+
if ( jQuery.browser.msie && /href|src/.test(name) && !jQuery.isXMLDoc(elem) )
return elem.getAttribute( name, 2 );
+
return elem.getAttribute( name );
// elem is actually elem.style ... set the style
};
});
-// DEPRECATED
-jQuery.each( [ "eq", "lt", "gt", "contains" ], function(i,n){
- jQuery.fn[ n ] = function(num,fn) {
- return this.filter( ":" + n + "(" + num + ")", fn );
- };
-});
-
jQuery.each( [ "height", "width" ], function(i,n){
jQuery.fn[ n ] = function(h) {
return h == undefined ?