开发者

Customising a JQuery Element

Is it inadvisable to add methods to a JQuery element?

eg:

var b = $("#uniqueID");
b.someMethod = function(){};

Update

Just to clarify, I am working on a JS-driven app that is binding JSON data to local JS objects that encapsulate the business logic for manipulating the actual underlying DOM elements. The objects currently store a reference to their associated HTML element/s. I was thinking that I could, in effect, merge a specific instance of a jquery element with it's开发者_如何转开发 logic by taking that reference add adding the methods required.


Well, there's nothing inherently wrong with it. It is, however, pretty pointless. For example:

$('body').someMethod = function(){};
console.log($('body').someMethod); // undefined

You are attaching the new function only to that selection, not to all selections of that element.

What you should do instead is to add a new function to jQuery.fn, which is a shortcut for jQuery.prototype:

jQuery.fn.someMethod = function() {
    if (this[0].nodeName == 'body') {
        // do your function
    }

    return this; // preserve chaining
};


The problem is that your function would be quite transient. A further requery and it will be gone. You can extend the jQuery object itself by $.fn.someMethod = function() {} and this method will be available for all queries.

$.fn.someMethod = function() {}
var b = $("body"); 
b.someMethod();


Or you can create a jQuery plugin. You can define a plugin this way:

$.fn.someMethod = function(options) {  
    # ... 
});

Call it using $('body').someMethod();

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜