带有<;的Jquery选择器;html标签>;
我在一个示例中看到了一些带有html标记选择器的jquery代码 什么是带有<;的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
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 & That < 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示例)的一部分。这就是为什么我感到困惑。谢谢你帮我澄清:)