0

jQueryプラグインを作成していますが、クリックやその他のイベントが発生することなく、プラグインが存在する場合にのみ、選択した要素にそのプラグインをアタッチしたいと考えています。

このプラグインには他の連鎖関数があり、このプラグインがその要素にアタッチされているときにこの関数を呼び出したいと思います。

そして、その要素をオブジェクトとして連鎖関数に渡したいと思います。

しかし、このエラーメッセージが表示され、プラグインはもちろん機能しません。eachプラグインを使用してもready、プラグインでも同じエラーが発生します

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

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

TypeError:$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 に答える