2

次の2ビットのコードとは異なる結果が発生しています。しかし、私はそれらが同じように機能するべきだと思いました。誰かが違いについて、そしていつ私が一方を他方の上に使うべきかについて私に教えてもらえますか?

function ContentHeader(selector){
    "use strict";
    var contentHeader = $(selector);

    var headerTitle = $('<span/>', {
        'class': 'headerTitle'
    }).appendTo(contentHeader);

    //OPTION A: This is my preferred method, but, after calling appendTo, no DOM element is added to the DOM tree.
    var headerTitleInput = $('<input/>', {
        'class': 'headerInput',
        type: 'text'
    }).appendTo(headerTitle);

    //OPTION B: By contrast, this method is less robust / just a string, but the DOM element is added correctly to the DOM tree.
    headerTitle.append('<input type="text" class="headerInput" />');
}

jQueryのDOMオブジェクトコンストラクターはプロパティをきちんとカプセル化するので使用したいのですが、どうやら私はそれを完全には理解していません。

編集:私はこの質問のためにjsFiddleの生成に取り組んでいます。もう一度確認してください。

4

1 に答える 1

0

私は答えを突き止めたと思います。残念ながら、それはセクシーでも教育的でもありません。

ContentHeaderオブジェクトを作成すると、いくつかのパブリックメソッドが返されます。その1つは「SetTitle」と呼ばれます。それはそのように見えます:

setTitle: function(title){
  headerTitle.text(title);
}

このメソッドは、サーバーに到達する非同期コード実行ブロック中に相互作用します。jQueryオブジェクトを作成するオーバーヘッドは、タイミングに基づいて異なる厄介な結果を生成していたようです。この問題は、jsFiddle内では再現できませんでした。

于 2012-08-10T23:19:04.240 に答える