0

我正在编写一个 jQuery 插件,并且我只想将该插件附加到选定的元素,只有当它存在时,没有任何点击或其他事件。

这个插件有其他链式函数,我想在这个插件附加到那个元素时调用这个函数。

我想将该元素作为对象传递给链式函数。

但是我收到此错误消息,并且该插件当然不起作用!无论我使用each还是ready在该插件中,我都会收到相同的错误

return this.each(function() {...}

return this.ready(function() {...)

类型错误:$this.function_1 不是函数

我该如何做对?

jQuery,

$(document).ready(function(){

        $('.box').selection();

    });


    (function($){

        $.fn.extend({ 

            selection: function(options) {

                var defaults = {
                    element:    "selection"
                }

                var options =  $.extend(defaults, options);
                var o = options;

                // Must declare a this variable outside the core if you have other children functions inside this plugin.
                var $this = this;

                return this.each(function() {

                    // Set the object.
                    var object = $(this);
                    //alert(object.html());

                    // Attach the functions.
                    $this.function_1(object);
                    $this.function_2(object);


                });

                // function_1
                $this.function_1 = function(object)
                {
                    alert('function 1');

                }

                // function_2
                $this.function_2 = function(object)
                {
                    alert('function 2');
                }

            }
        });

    })(jQuery);

html,

<div class="box">

    <ul class="selection">
        <li>1</li>
        <li>2</li>
        <li>3</li>
    </ul>

</div>

jsfiddle

4

1 回答 1

0

return在声明函数之前调用。将函数声明移到调用上方return,它就可以工作了。

于 2012-09-21T17:03:45.800 回答