带有<;的Jquery选择器;html标签>;

带有<;的Jquery选择器;html标签>;,jquery,jquery-selectors,tags,Jquery,Jquery Selectors,Tags,我在一个示例中看到了一些带有html标记选择器的jquery代码 什么是 var variable = ''; $('<div />').text(variable).html() var变量=“”; $('').text(变量).html() 意味着什么?我的意思是,我对作为选择器的部分很好奇。 有人能解释一下吗 编辑:HTML页面内部没有和div 编辑2:完整的代码是 <ul id="discussion"></ul> <script

我在一个示例中看到了一些带有html标记选择器的jquery代码

什么是

var variable = '';    
$('<div />').text(variable).html()
var变量=“”;
$('').text(变量).html()
意味着什么?我的意思是,我对作为选择器的
部分很好奇。 有人能解释一下吗

编辑:HTML页面内部没有和div

编辑2:完整的代码是

<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>
      var encodedName=$('').text(name).html(); var encodedMsg=$('').text(message.html(); $(“#讨论”)。追加(“
    • ”+encodedName +“:”+encodedMsg+”
    • );
当我呈现页面时,我只看到ul标记中的li标记。没有divs。那是我的困惑。
是否用于任何html标记?我的意思是,我把它改成

,它仍然可以工作


很抱歉第一次没有把问题写清楚。

在这种情况下,它不是选择器

它将字符串转换为jQuery元素


它与编写
$(“”)
相同,只是它较短。

它创建一个div元素,但不将其添加到DOM中。因为它没有存储到变量中,所以这个脚本也没有用。.text(variable).html()部分也没有意义:它将div的内容设置为空字符串,然后返回div的内容。

正如其他人所指出的,这不是选择器,而是动态创建一个html元素,它不是当前文档的一部分

然而,还没有人解释它到底在做什么

设置文本值,然后获取内存中
的HTML值的目的是对文本字符串进行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"
var变量='This&That<5';//具有特殊字符的文本值
变量x=$('');//在内存中创建临时div元素
x、 文本(变量);//设置DIV中包含的文本
//“这个和那个<5”。这是实际的文字
//如果元素被删除,将显示的文本
//显示在浏览器中。
var encoded=x.html();//获取的HTML表示形式
//div的内容
警报(编码);//显示“这个和那个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))
);
//来自某处的名称和消息-您不显示位置
//这些值来自上面的代码。
var name=“Bob O'Conner”;
var message=“嗨,欢迎来到我的网站。”;
var newItem=$(“
  • ”).text(“:”+消息); var newTitle=$('')。文本(名称); newItem.prepend(newTitle); $(“#讨论”)。追加(新项目);
  • 或者一个较短的版本,比如:

    // 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))
    );
    
    $(“#讨论”)。追加(
    $('
  • ').text(':'+message).prepend($('').text(name)) );
  • 选择器可能重复,或者您正在询问为什么选择HTML?请看,我非常讨厌jQuery重载
    $
    的方式,这意味着许多完全不同的事情,这取决于您给出的参数。我更新了问题,请参阅最后一次编辑。我看到@Quentin添加到问题中的那个问题,但它没有回答我的问题。我只是添加了一个编辑注释。当代码运行时,它也不会显示任何div。让我来写剩下的代码。只要一分钟,为什么会显示什么?它正在创建一个div。将其文本值设置为某物。获取它的html值。然后什么也不做。当你可以在li标签中将变量用作文本值时,创建一个div并设置它的文本值并获取html的逻辑是什么?我重复一遍,呈现的代码没有显示任何div,它只是li标记中的文本。是的,那么我们可以说div用作任何HTML标记只是为了获取它的内容。对吗?如果我是对的,那么这就是我想听到的:)这是真的,但在不将元素添加到页面时创建元素是没有意义的。为什么不使用javascript变量或对象呢?同样,在这个脚本中,元素没有存储到变量中,所以它可能会在创建之后立即被销毁。这就是我的想法。正如我所说,该代码块是我正在查看的示例(SignalR chathub示例)的一部分。这就是为什么我感到困惑。谢谢你帮我澄清:)