UNPKG

ddd-jquery

Version:

de-bowerified, de-amdified, de-gruntified... jQuery.

66 lines 1.98 kB
var jQuery = require('../core'), access = require('../core/access'), support = require('./support'); var rfocusable = /^(?:input|select|textarea|button)$/i; jQuery.fn.extend({ prop: function (name, value) { return access(this, jQuery.prop, name, value, arguments.length > 1); }, removeProp: function (name) { return this.each(function () { delete this[jQuery.propFix[name] || name]; }); } }); jQuery.extend({ propFix: { 'for': 'htmlFor', 'class': 'className' }, prop: function (elem, name, value) { var ret, hooks, notxml, nType = elem.nodeType; if (!elem || nType === 3 || nType === 8 || nType === 2) { return; } notxml = nType !== 1 || !jQuery.isXMLDoc(elem); if (notxml) { name = jQuery.propFix[name] || name; hooks = jQuery.propHooks[name]; } if (value !== undefined) { return hooks && 'set' in hooks && (ret = hooks.set(elem, value, name)) !== undefined ? ret : elem[name] = value; } else { return hooks && 'get' in hooks && (ret = hooks.get(elem, name)) !== null ? ret : elem[name]; } }, propHooks: { tabIndex: { get: function (elem) { return elem.hasAttribute('tabindex') || rfocusable.test(elem.nodeName) || elem.href ? elem.tabIndex : -1; } } } }); if (!support.optSelected) { jQuery.propHooks.selected = { get: function (elem) { var parent = elem.parentNode; if (parent && parent.parentNode) { parent.parentNode.selectedIndex; } return null; } }; } jQuery.each([ 'tabIndex', 'readOnly', 'maxLength', 'cellSpacing', 'cellPadding', 'rowSpan', 'colSpan', 'useMap', 'frameBorder', 'contentEditable' ], function () { jQuery.propFix[this.toLowerCase()] = this; });