1

この結果を backbone.js の結果にするにはどうすればよいですか<p><h3>fgfdgdfg</h3></p>

var TodoView = Backbone.View.extend({
    el:'p',
    render: function () {
        $('body').append(this.$el.html("<h3>fgfdgdfg</h3>"));
    }
});

var todoView = new TodoView();
todoView.render();
4

2 に答える 2

6

tagNameの代わりに使用しelます。@muistooshort
に感謝します。全体を削除しただけです。<p>

var TodoView = Backbone.View.extend({

    tagName:'h3',
    render: function () {
        $('body').append(this.$el.html("fgfdgdfg"));
    }

});

var todoView = new TodoView();
todoView.render();

elビューで使用する既存の DOM 要素があるかどうかを設定します。設定tagNameは、ビューのルートの 'h3' 要素を生成するように Backbone に指示します。

これを行うこともできます (私はこの方法を好みます。'el' の設定は避けてください):

var TodoView = Backbone.View.extend({

    tagName:'h3',
    render: function () {
        this.$el.html("fgfdgdfg");
        return this;
    }

});

// view is more reusable now, since it doesn't have the 'body' part in render.
// So, another instance could be rendered and added to the page somewhere else.
var todoView = new TodoView();
$('body').append(todoView.render().el);
var todoView2 = new TodoView();
$('body').append(todoView2.render().el);

ビューに使用したい 'h3' 要素が html に既にある場合は、次のようにすることができます。

// assuming this html on the page already:
// <body><h3></h3></body>
var TodoView = Backbone.View.extend({

    // setting 'el' tells backbone to use the existing <h3>.
    // You probably would want to use an id rather than 'h3' though.
    el:'h3',
    render: function () {
        this.$el.html("fgfdgdfg");
        return this;
    }

});

var todoView = new TodoView();
todoView.render();
于 2013-02-25T18:27:01.447 に答える
2

<p><h3>fgfdgdfg</h3></p>は有効な HTML ではなく、ブラウザは無効な HTML を修正しようとすることが多いため、おそらくできません。

細かい<p>仕様から:

許可された内容

フレージングコンテンツ

フレージングの内容は次のとおりです。

フレージングコンテンツ

通常の文字データと混合されたフレージング要素で構成されます。

通常の文字データは、多かれ少なかれ、マークアップのないプレーン テキストであるため<h3>、そこには含まれません。フレージング要素<a>は、<b>、 、<img>、 ... など単純なもの<h3>

一貫した結果が必要な場合は、HTML を修正する必要があります。次に、有効な HTML を念頭に置いたら、Paul のアドバイスに従って作業を完了してください。

于 2013-02-25T18:49:13.847 に答える