단일 페이지에서 여러 요소를 호출 할 수있는 간단한 jQuery 플러그인이있다.jQuery 플러그인의 여러 인스턴스 호출하기
필자는 셀렉터를 명시 적으로 선언했지만 플러그인을 호출 한 객체에 상대적이라고 생각합니다. 어떻게해야합니까? , myPlugin
내부
var myPlugin = new MyPlugin(this, options);
같은 작업을 수행합니다 :
(function($) {
var MyPlugin = function(options){
var plugin = $(this); // The entire myPlugin object
var element = $("div#plugined div#element"); // An element in myPlugin
var pluginChild = $(); // Need selector of what plugin was called on + additional slider. ("div#plugined div#child")
this.publicFunction = function() {
// something...
}
var privateFunction = function() {
// something private...
}
};
$.fn.myPlugin = function(options) {
var defaults = {
// options
}
var options = $.extend(defaults, options);
var myPlugin = new MyPlugin(options);
$("div#plugined a.arrow").bind('click', function(e){ // Same problem. Need selector of what plugin was called on + additional slider. ("div#plugined div#child")
e.preventDefault();
myPlugin.publicFunction();
});
return myPlugin;
};
})(jQuery);
<script type="text/javascript">
$(window).load(function() {
$('div#plugined').myPlugin();
});
</script>
이것은 작동합니다. var element = $ set.child ("div # element")를 선택할 수 있습니다. 그러나 여러 개의 DOM 요소에서 myPlugin을 호출하면 ($ div 'plugins1') myPlugin(); $ ('div # plugined2') myPlugin();) 여전히 서로 간섭하는 것 같습니다. –
@Michael Gruber :'$ .fn' 함수 안에서 셀렉터를 상대적으로 만드셨습니까? 그 외에도 두 개의 클릭 핸들러가 바인딩되고 각각은 자체 인스턴스를 참조합니다. – pimvdb
바인드 함수는? $ ("div # plugined a.arrow"). bind()가 this.children ("a.arrow")입니다. bind() –