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>