jQuery(V.6.1)コアの 'attr'関数を修正しようとしています。jquery関数の編集方法
jquery-6.1.jsファイルの後にページに含まれているplugins.jsファイルがあります。 plugins.jsファイルには、いくつかのSVG機能に対応するためのさまざまなjQueryコア関数に対する改良が含まれています。
attr関数をplugins.jsファイルにコピーせずにコピーしましたが、呼び出されるとJavaScriptエラーが発生するようになりました。
この特定の関数は(私はおそらく間違った方法でそれを上書きしています)を上書きすることが好きではない理由を誰もが知っています:
(function($){
$.fn.attr = function(elem, name, value, pass){
var nType = elem.nodeType;
// don't get/set attributes on text, comment and attribute nodes
if (!elem || nType === 3 || nType === 8 || nType === 2) {
return undefined;
}
if (pass && name in jQuery.attrFn) {
return jQuery(elem)[ name ](value);
}
// Fallback to prop when attributes are not supported
if (!("getAttribute" in elem)) {
return jQuery.prop(elem, name, value);
}
var ret, hooks,
notxml = nType !== 1 || !jQuery.isXMLDoc(elem);
// Normalize the name if needed
name = notxml && jQuery.attrFix[ name ] || name;
hooks = jQuery.attrHooks[ name ];
if (!hooks) {
// Use boolHook for boolean attributes
if (rboolean.test(name) &&
(typeof value === "boolean" || value === undefined || value.toLowerCase() === name.toLowerCase())) {
hooks = boolHook;
// Use formHook for forms and if the name contains certain characters
} else if (formHook && (jQuery.nodeName(elem, "form") || rinvalidChar.test(name))) {
hooks = formHook;
}
}
if (value !== undefined) {
if (value === null) {
jQuery.removeAttr(elem, name);
return undefined;
} else if (hooks && "set" in hooks && notxml && (ret = hooks.set(elem, value, name)) !== undefined) {
return ret;
} else {
elem.setAttribute(name, "" + value);
return value;
}
} else if (hooks && "get" in hooks && notxml) {
return hooks.get(elem, name);
} else {
ret = elem.getAttribute(name);
// Non-existent attributes return null, we normalize to undefined
return ret === null ?
undefined :
ret;
}
};
})(jQuery);
どのようなエラーが生成されますか? –
attrをどのような要素で使用していますか? jquery 1.6では、attrがどのように動作するかを排他的に変更しました.DIVタグやテーブルなどの特定のhtml要素でpropを使用してプロパティを設定しました:http://api.jquery.com/prop/ – John
無効な 'in'オペランドelem - if !(elemの "getAttribute")){ ちなみに、jQueryの一部を変更する前にこのテクニックを使用しましたが、上書きを受け付けないattr関数(これまでのところ)のようです。 – Steve