我的页面中有一个asp标签。我喜欢用jquery设置一些文本。
<asp:label id="lblError" runat="server" CssClass="error" />
我将使用哪种方法。
$(".error").text('hello');
or
$(".error").html('hello');
or
$(".error").val('hello');
我对这一切感到困惑?请帮助。
答案 0 :(得分:3)
如果您正在使用母版页或用户控件,其中clientID将与您在.aspx页面中定义的不同,或者另一个元素可能共享同一个类,则另一个选项是:
$("span[id$='lblError']").text('hello');
要具体回答这个问题,尽管已经注明.text()
是最合适的选项,因为所有3都可行。从语义上讲,使用.text()
插入文本而不是.html()
是有意义的,因为您没有插入HTML。
就实际发生的事情而言,现在我会再考虑一下这个问题的另一部分,你可以通过检查jQuery脚本本身来看到这个:
.text()使用传入的字符串调用javascript函数createTextNode
并附加到DOM并执行其他操作。 // 12行代码
.html()为清理/处理传入的字符串做了更多处理。还希望有一些代码来防止内存泄漏。还使用浏览器的innerHTML
功能。 // 38行代码
关于区分这两者的API文档中.text()
和.html()
之间差异的最后一个注释是这一行:
Unlike the .html() method, .text() can be used in both XML and HTML documents.
答案 1 :(得分:2)
我认为在这种情况下最合适的是
$(".error").text('hello');
val(string)
它应该用于设置输入控件值html(string)
应该用于设置内部html内容,而你只是分配纯文本。