尝试了几种(第一次)创建jQuery扩展的方法后......它还没有工作:
(function($){
$.fn.fixInputWidthsForBlog = function()
{
console.log('hi extension');
// var w = $('#newblogentryform input[name="headline"]').outerWidth();
// $('#newblogentryform textarea[name="text"]').outerWidth(w);
// $('#newblogentryform submit[name="submit"]').outerWidth(w);
}; // endFUNC
}(jQuery));
这(以下)是我收到错误的地方:
" jquery-3.1.0.min.js:2未捕获TypeError:$ .fixInputWidthsForBlog不是函数"
$(document).ready(function(){
$.fixInputWidthsForBlog();
alert('ok1');
$(window).on('resize', function(){ $.fixInputWidthsForBlog(); });
$('.linkNewBlogEntry').on('click',function() {
$('#newblogentryformdiv').slideToggle().delay(1200).fixInputWidthsForBlog();
// setTimeout("fixInputWidthsForBlog();",1200);
return false;
});
});
我也尝试过:
$.fn.extend({
fixInputWidthsForBlog = function() {}
});
简单地说:
$.fn.fixInputWidthsForBlog = function() {};
但是所有这些都导致了同样的错误:
" jquery-3.1.0.min.js:2未捕获TypeError:$ .fixInputWidthsForBlog不是函数"
在我尝试执行的行中:
$.fixInputWidthsForBlog();
以这种或那种方式。
答案 0 :(得分:2)
扩展$.fn
仅适用于元素链,而不适用于jQuery对象的自身功能。为此,您需要直接扩展$
,而不是fn
。
(function($) {
// jQuery plugin
$.fn.onElements = function() {
console.log('hi, element chain plugin');
// make chainable
return this;
};
// jQuery object extension
$.onjQuery = function() {
console.log('hi, jQuery object extension');
};
}(jQuery));
// will work
$('someElementSelector').onElements();
$('someElementSelector').onElements().onElements();
$.onjQuery();
// will not work
// $('someElementSelector').onjQuery();
// $.onElements();

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;