1

見ている例で、htmlタグセレクターを備えたjqueryコードを見ました。

何が

var variable = '';    
$('<div />').text(variable).html()

意味?<div />というか、セレクターという部分が気になります。誰もそれを説明できますか?

編集: HTML ページには内部に div がありません。

Edit2:完全なコードは

<ul id="discussion"></ul>

<script type="text/javascript">
        var encodedName = $('<div />').text(name).html();
        var encodedMsg = $('<div />').text(message).html();

        $('#discussion').append('<li><strong>' + encodedName
            + '</strong>:' + encodedMsg + '</li>');
</script>

ページをレンダリングすると、ul タグ内に li タグしか表示されません。分割なし。それが私の混乱でした。は<div />任意の html タグに使用されていますか? <a />つまり、 orに変更して<p />も同じように機能します。

初めて質問を明確に書いて申し訳ありません。

4

3 に答える 3

1

div 要素を作成しますが、DOM には追加しません。変数に格納されていないため、このスクリプトはほとんど役に立ちません。.text(variable).html() 部分も意味がありません。div の内容を空の文字列に設定し、div の内容を返します。

于 2013-11-04T14:05:48.703 に答える
1

他の人が指摘しているように、これはセレクターではありませんが、現在のドキュメントの一部ではない HTML 要素をオンザフライで作成しています。

ただし、実際に何をしているのかはまだ誰も説明していません。

テキスト値を設定してからメモリ内の HTML 値を取得する目的は、テキスト<div>の文字列を html エンコードすることです。これは、空の文字列を使用している元の質問ではあまり意味がありませんが、次の例を検討してください。

var variable = 'This & That < 5'; // a text value with special characters

var x = $('<div />'); // creates an ad-hoc div element in memory

x.text(variable); // sets the text contained within the DIV
                  // to 'This & That < 5'. This is the actual literal
                  // text that would be displayed if the element was
                  // displayed in a browser.

var encoded = x.html(); // gets the HTML representation of
                        // the contents of the div

alert(encoded); // shows "This &amp; That &lt; 5"

何が起こっているのか理解できたので、そのような HTML 文字列を作成することは、この問題に対処する最良の方法ではないことを指摘しておきます。代わりに、次のように、実際に必要な要素を構築する方が理にかなっています。

// a name and message from somewhere - you don't show where
// these values from in your code above.
var name = "Bob O'Conner";
var message = "Hi, welcome to my <website>.";

var newItem = $('<li />').text(':' + message);
var newTitle = $('<strong />').text(name);
newItem.prepend(newTitle);
$('#discussion').append(newItem);

または、次のような短いバージョン:

$('#discussion').append(
    $('<li />').text(':' + message).prepend($('<strong />').text(name))
);
于 2013-11-08T06:35:15.633 に答える