小jquery扩展不起作用

时间:2016-09-13 09:00:08

标签: jquery

尝试了几种(第一次)创建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();  

以这种或那种方式。

1 个答案:

答案 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;
&#13;
&#13;