在jQuery中是一个传递给构造函数的文档片段,字符串或对象?

时间:2012-01-06 19:41:22

标签: jquery dom

我想知道如何在插件中告诉用户是否传递了文档片段或DOM字符串 - 或者他们是否传递了实际对象。如果他们传入DOM字符串或文档片段,我需要.appendTo('body')

$('p.my_plugin').myPlugin();
// or
$(object).myPlugin();
// vs
$('<p>My string</p>').myPlugin();

基本的插件shell

(function($){
    var methods = {
        init : function(options) {
            return this.each(function() {
                console.log(this);
                ....

3 个答案:

答案 0 :(得分:1)

我还没有对此进行太多测试,而且我不确定它是否有效,但this.is('*')似乎有效。

$('p.my_plugin').is('*');  // true

$(object).is('*'); // false

$('<p>My string</p>').is('*'); // true

答案 1 :(得分:0)

我只是检查元素是否有父元素:

if(!this.parent().length) {
    this.appendTo($('body'));
}

答案 2 :(得分:0)

if (typeof this[0] === 'object') {
    // they passed an object
} else {
    // they passed something else (a string, for example)
}