전체 체인 기능을 유지하면서 컨텍스트 개체에 새 네임 스페이스 기능을 추가하는 jQuery 플러그인을 만들려고합니다. 나는 그것이 가능하다면 모르겠지만, 여기에 내가 지금까지 무엇을의 예 : 나는 또한 $(document.body).someplugin().css('background-color', '#000').caption('hey how\'s it going?');
특정 개체에 대한 jQuery 플러그인 네임 스페이스
$(document.body).someplugin().caption('hey how\'s it going?').css('background-color', '#000');
을 할 경우
(function ($) {
var loadScreen = $('<div />').text('sup lol');
$.fn.someplugin = function (args) {
var args = args || {},
$this = this;
$this.append(loadScreen);
return {
'caption' : function (text) {
loadScreen.text(text);
return $this;
}
};
}
})(jQuery);
이 잘 작동이
.someplugin()
은 jQuery 객체가 아니라 자체 객체를 반환하므로 예상대로 작동하지 않습니다. 나중에 .caption()
에 $(document.body)
으로 액세스 할 수 있어야합니다. 예를 들어 변수가 초기 값 $(document.body).someplugin()
으로 설정되지 않은 경우입니다. 즉, 어떻게 든 .caption()
이 document.body
개체의 경우 $.fn.caption = function() ...
을 통해 어떻게 설정 될지를 의미합니다. 이것은 내가 확실히 할 수없는 부분입니다. 그렇지 않다면 플러그인 함수 연쇄 기능을 유지하기 위해 변수를 설정해야한다고 정착해야 할 것입니다. JQuery와
var $body = $(document.body).someplugin().css('background-color', '#000');
$('.non-initialized').caption(); // Error, jQuery doesn't know what caption is
$body.caption('done loading...');
요점은 jQuery 네임 스페이스를 어지럽히 지 않도록하고, 여전히 내 자신의 플러그인에 연결 가능한 기능을 확장 할 수 있다는 것입니다. '.caption()'은'$ .fn.loading = function() ...'과'$ .fn.tabs = function()'과 완전히 다른 것일 수 있습니다. 기본적으로, 나는 별도의 플러그인간에'.caption()'기능을 분리 할 수있는 능력이 필요하다. – Shea
나는 $ .extend ($ this, {caption : function() {...}})을 사용하여 솔루션을 생각해 냈습니다. ... ... 여전히 변수를 사용해야하지만 적어도 jQuery 네임 스페이스가 복잡하다. – Shea
해당 특정 jQuery 객체 만 확장하고 있으므로 해당 메소드에 액세스하려면 해당 jQuery 객체를 저장해야한다. 'this.caption = function() {};''.extend()'는 필요 없습니다. – jfriend00