Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.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 从网页获取数据的更好方法,而不是处理DOM和HTML元素_Javascript_Jquery_Html_Backbone.js - Fatal编程技术网

Javascript 从网页获取数据的更好方法,而不是处理DOM和HTML元素

Javascript 从网页获取数据的更好方法,而不是处理DOM和HTML元素,javascript,jquery,html,backbone.js,Javascript,Jquery,Html,Backbone.js,我正在使用主干网,在我使用Jquery之前,在我使用HTML元素属性作为变量来设置数据之前,以及当我需要在HTML元素中可以访问的信息时 例如:我有一个图像库,正如你所知,每个图像都应该有一个标题,Alt,src这些最初来自HTML,但我添加了一个新属性,称为mk author,mk是一个前缀,当用户单击该图像时,图像最大化,图像旁边将显示作者姓名。有时我会获取ID并在服务器端执行一些操作,当然,我会从服务器端验证它 问题: 这是一种安全的好方法吗 2-更好的方法是什么?首先,添加您自己的属性会

我正在使用主干网,在我使用Jquery之前,在我使用HTML元素属性作为变量来设置数据之前,以及当我需要在HTML元素中可以访问的信息时

例如:我有一个图像库,正如你所知,每个图像都应该有一个标题,Alt,src这些最初来自HTML,但我添加了一个新属性,称为mk authormk是一个前缀,当用户单击该图像时,图像最大化,图像旁边将显示作者姓名。有时我会获取ID并在服务器端执行一些操作,当然,我会从服务器端验证它

问题:

这是一种安全的好方法吗


2-更好的方法是什么?

首先,添加您自己的属性会给您带来一些不完全是HTML的东西;它可能工作得很好,但你最好还是坚持标准(为了将来的打样、便携性等)。而且,当标准提供了所有人都能理解的内容时,就不需要它们了,jQuery甚至通过

对于您的图像库示例,更惯用的主干方法包括:

  • 库中每个图像的模型:

    var Image = Backbone.Model.extend({
        //...
    });
    
    此模型的实例将保存图像的URL、大小、名称、作者等

  • 保存图像的集合:

    var Images = Backbone.Collection.extend({
        model: Image,
        //...
    });
    
  • 每个图像的视图,这将为一个
    图像
    模型提供交互和显示:

    var ImageView = Backbone.View.extend({
        events: {
            'click': 'show_details',
        },
        render: function() {
            // Build the HTML for `this.model` (an `Image`)
            // and add it to `this.$el`...
            return this;
        },
        show_details: function() {
            // The clicked image model will be `this.model`
            // so do whatever you need to.
        }
    });
    
  • 管理整个集合的视图,这主要创建
    ImageView
    s:

    var ImagesView = Backbone.View.extend({
        render: function() {
            this.collection.each(function(image) {
                var v = new ImageView({ model: image });
                this.$el.append(v.render().el);
            }, this);
            return this;
        }
    });
    
  • 然后,您将创建您的集合,填充它,然后说:

    var v = new ImagesView({ collection: images_collection });
    $(container).append(v.render().el);
    
    演示:


    花一点时间学习主干教程和,现在是个好主意。

    谢谢你的回答,主干文档还可以,但没有演示和示例,只是定义函数。你也能回答吗?