Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery插件错误,带有.wrap()和.wrapAll()_Javascript_Jquery_Jquery Plugins - Fatal编程技术网

Javascript jQuery插件错误,带有.wrap()和.wrapAll()

Javascript jQuery插件错误,带有.wrap()和.wrapAll(),javascript,jquery,jquery-plugins,Javascript,Jquery,Jquery Plugins,注意:我已经解决了这个问题的主要问题,但是我仍然没有可用的代码,因为我现在做的是一个完全不同的问题,我将在那里打开一个新问题解决它,然后发布这个问题的答案。我还将添加问题的链接。您可以在此处看到我当前的进度: 我正在编写两个基本的jQuery插件,$.fn.query和$.fn.build,分别对数组进行排序,并创建要插入到文档中的html代码。我目前正在用Vimeo视频ID测试它,我将用它来显示视频 $.fn.query工作正常,下面的代码出错 $.fn.build = function(pa

注意:我已经解决了这个问题的主要问题,但是我仍然没有可用的代码,因为我现在做的是一个完全不同的问题,我将在那里打开一个新问题解决它,然后发布这个问题的答案。我还将添加问题的链接。您可以在此处看到我当前的进度:

我正在编写两个基本的jQuery插件,
$.fn.query
$.fn.build
,分别对数组进行排序,并创建要插入到文档中的html代码。我目前正在用Vimeo视频ID测试它,我将用它来显示视频

$.fn.query
工作正常,下面的代码出错

$.fn.build = function(params) {

    // Parameters //
    var options = $.extend( {
            'wrapAll'  : undefined,
            'splitBy'  : undefined,
            'wrapRow'  : undefined,
            'wrapEach' : '<div>'
        }, params),
        build;

    // Wrap Each //
    if (options.wrapEach !== undefined) {
        build = this.wrap(options.wrapEach);
    }

    // Split into Rows //
    if (options.splitBy !== undefined && options.wrapRow !== undefined) {
        var tmp;
        for (var i = build.length; i > 0; i -= 3) {
            tmp = build.splice(i, i + 3).wrapAll(options.wrapRow);
        }
        build = tmp;
    }

    // Wrap All //
    if (options.wrapAll !== undefined) {
        build = build.wrapAll(options.wrapAll);
    }

    // Return Build //
    return build;
};
$.fn.build=函数(参数){
//参数//
变量选项=$。扩展({
“wrapAll”:未定义,
“splitBy”:未定义,
“wrapRow”:未定义,
“水蜜桃”:“
},参数),
建设;
//包扎//
如果(options.wraphy!==未定义){
build=this.wrap(options.wrap);
}
//分成几行//
if(options.splitBy!==未定义和&options.wrapRow!==未定义){
var-tmp;
对于(var i=build.length;i>0;i-=3){
tmp=build.splice(i,i+3).wrapAll(options.wrapow);
}
构建=tmp;
}
//包扎//
如果(options.wrapAll!==未定义){
build=build.wrapAll(options.wrapAll);
}
//返回构建//
返回构建;
};
然后调用(两个)函数:

var query = $(example).query({
     shuffle: true,
       limit: 6
}).build({
     wrapAll: '<div class="container" />',
     splitBy: 3,
     wrapRow: '<div class="row" />',
    wrapEach: '<div class="span4" />'
});
var query=$(示例).query({
洗牌:没错,
限额:6
}).建造({
wrapAll:“,
斯普利比:3,
wrapRow:“,
wrapEach:“”
});
导致以下错误

未捕获错误:未找到错误:DOM异常8

这并不是完全有帮助,因为它显示了一个jQuery错误,它似乎存在于

您可以在这里看到我在JSFIDLE上的javascript代码


PS:我一直在努力遵循最佳实践,因此如果您注意到任何细微的偏差,请告诉我,我会修复代码


我认为您将jQueryDOM函数与数组操作混淆了。没有什么理由在jQuery原型中链接这两者,因为操作是非常独立的

另外,
$.fn.build
并不构建在调用原型之前创建的元素上,而是在其中执行一些
wrapAll
方法。为什么不带一个外部容器,并基于数据在其中构建DOM结构呢

尝试以下方法:

$.query = function(data, options) {
    // do the array thingie with data
    return data;
};

$.fn.build = function(data, options) {
    return this.each(function() {
        // do the DOM thingies based on data and the context element.
        // don’t use wrapAll, bring an outside element instead
    });
}
然后

$('<div>').addClass('container').build( $.query(example), {
    splitBy: 3,
    wrapRow: '<div class="row" />',
    wrapEach: '<div class="span4" />' 
}).appendTo('body');

我认为您将jQueryDOM函数与数组操作混淆了。没有什么理由在jQuery原型中链接这两者,因为操作是非常独立的

另外,
$.fn.build
并不构建在调用原型之前创建的元素上,而是在其中执行一些
wrapAll
方法。为什么不带一个外部容器,并基于数据在其中构建DOM结构呢

尝试以下方法:

$.query = function(data, options) {
    // do the array thingie with data
    return data;
};

$.fn.build = function(data, options) {
    return this.each(function() {
        // do the DOM thingies based on data and the context element.
        // don’t use wrapAll, bring an outside element instead
    });
}
然后

$('<div>').addClass('container').build( $.query(example), {
    splitBy: 3,
    wrapRow: '<div class="row" />',
    wrapEach: '<div class="span4" />' 
}).appendTo('body');

使用完整的html元素<代码>否则您可能会遇到跨浏览器问题。这不是导致错误的原因,但会导致问题。
$.fn.query
返回一个不包含dom节点的数组,然后将其视为dom节点数组。这肯定行不通。@KevinB是否有一个简单的解决方法,或者我必须为每个项目创建元素(Dom节点)?我建议不要为这个特定的插件使用
$.fn
对象。例如,这将是
$。查询
$。构建
也需要类似的操作(需要更长的时间)。使用完整的html元素<代码>
否则您可能会遇到跨浏览器问题。这不是导致错误的原因,但会导致问题。
$.fn.query
返回一个不包含dom节点的数组,然后将其视为dom节点数组。这肯定不行。@KevinB是否有一个简单的解决方法,或者我必须为每个项目创建元素(Dom节点)?我建议不要为这个特定插件使用
$.fn
对象。例如,这将是
$。查询
$。构建
也需要类似的操作(需要更长的时间)。