Javascript .addClass()不工作
这是我第一次使用Javascript .addClass()不工作,javascript,jquery,Javascript,Jquery,这是我第一次使用.addClass() 在我的项目中,我需要在虚拟手机屏幕上显示通知(iPhone的图像)。通知有标题和一些说明。此标题和说明来自同一网页上的表单。要撰写此通知,我正在执行以下操作: var notificationText = $('#title').val().addClass('title') + plainText.addClass("description"); 但是,我得到一个错误: TypeError: $(...).val(...).addClass is no
.addClass()
在我的项目中,我需要在虚拟手机屏幕上显示通知(iPhone的图像)。通知有
标题
和一些说明
。此标题
和说明
来自同一网页
上的表单。要撰写此通知,我正在执行以下操作:
var notificationText = $('#title').val().addClass('title') + plainText.addClass("description");
但是,我得到一个错误:
TypeError: $(...).val(...).addClass is not a function
Uncaught TypeError: Object sss has no method 'addClass'
我做错了什么
更新:
因此,根据压倒性的要求,我做了:
var notificationText = $('#title').addClass('title').val() + plainText.addClass("description");
但是,我得到一个错误:
TypeError: $(...).val(...).addClass is not a function
Uncaught TypeError: Object sss has no method 'addClass'
更新2:我不需要设置描述的样式,因此我删除了与之相关的类。请看我的。现在的问题是,
标题
中的文本变得粗体,而不是在通知
中复制的文本。它没有按照CSS设置样式。要添加类,必须使用
$('#title').addClass('title');
如果要获取值,可以使用
$('#title').addClass('title').val()
尝试将
addClass
放在第一位
$('#title').addClass('title');
更新
要使代码完全工作,您应该像这样拆分行
var notificationText = $('#title').val() + ' ' + plainText;
$('#title').addClass('title');
$(plainText).addClass("description");
最后更新
所以我们实际上想做的是:
- 获取内容的值
- 在提交时附加它们并设置附加文本的样式
// Get the text.
var notificationText = $('#title').val() + ' ' + plainText;
// Append to form.
$('form').append('<span class="summary">' + notificationText + '</span>');
// CSS styling
.summary {
display:block;
font-weight: bold;
}
//获取文本。
var notificationText=$('#title').val()+''+纯文本;
//附加到表单。
$('form')。追加(''+通知文本+'');
//CSS样式
.摘要{
显示:块;
字体大小:粗体;
}
请参见您正在尝试将类添加到值,该值肯定不是
jQuery
对象
请尝试以下方法:
$('#title').addClass('title').val()
$('#title').addClass('title');
你犯的错误:
<div id="title"><div>
$('#title').val().addClass('title')
因为不能将类添加到元素的值中
您应该将addClass添加到特定元素,因为addClass内部将向该元素添加属性类。
因此,最终的解决方案是:
$('#title').addClass('title').val()
因为您正在尝试将类添加到值而不是元素上
$('#title').val().addClass('title') //it is wrong
替换为:
$('#title').addClass('title')
如果明文不是您初始化的元素对象
var plainText = $('#anotherId');
也会导致此错误。考虑到#title
是元素的id。
您可以直接向其中添加类名
$('#title').addClass('className');
其中
className
是类的名称。而addClass
和val()
都是jQuery对象上的方法,val()
不像addClass
那样是可链接的。执行$('#title').val()
时,不返回对象,只返回元素的字符串值
改用这个:
$('#title').addClass('title').val()
$('#title').addClass('title');
如果您仍然需要获取该值:
$('#title').addClass('title').val();
plaintext
产生错误的原因是,您试图在使用document.createElement(“DIV”)本机创建的DOM节点上使用jQueryaddClass
方法代码>。这是行不通的。要使其正常工作,您需要使用jQuery定义新元素:
var divEle = $('<div></div>');
或使用本机classname
方法将类添加到DOM节点:
divEle.className = divEle.className + " description";
在这么短的时间里有这么多答案。。。叹息
我收集了你想要的东西。试试这个:
JSFiddle:
$(文档).ready(函数(){
CKEDITOR.replace('description');
$(“#title”).focus();
$('form')。提交(函数(事件){
event.preventDefault();
var html=CKEDITOR.instances.description.getSnapshot();
var divEle=document.createElement(“DIV”);
divEle.innerHTML=html;
var plainText=(divEle.textContent | | divEle.innerText);
var$title=$('addClass
只能对jQuery对象执行,并返回一个jQuery对象-这就是使其可链接的原因。不能将类添加到字符串中
因此,在这段代码中,实际上有两个错误:
1) plainText.addClass
-plainText
是一个字符串,而不是jQuery对象。您必须将该类添加到您创建的元素中(在您的示例中是divEle
元素),但是,由于addClass
仅适用于jQuery对象,因此必须首先将div转换为jQuery元素。您可以通过执行以下操作来完成此操作:
$(divEle).addClass('description');
2) addClass
返回一个jQuery对象,因此不能用字符串连接它
编辑:刚刚意识到您正在将通知文本
(一个字符串)附加到DOM中。您必须将其转换为div并将div添加到DOM中
jsiddle:您应该使用$('#title').addClass('title').val()
您正在尝试构建JSON对象吗?@MaxArt:只有少数几个真正考虑到了实际问题:)我不知道是谁投票赞成这个问题,因为它有一些严重的问题。纯文本
是一个文本内容,你怎么能给它添加类呢?但是它如何与OP的+纯文本.addClass(“description”);
一起工作呢?但是它如何与+纯文本.addClass(“description”)一起工作呢
OP有?@Archer“文本[对象]”@科林巴康:在你的提琴中,文本框中的文本变得粗体。我实际上希望通知中的文本是bold
和display:block
@RahulDesai谢谢你提供的信息。请参阅最终的提琴更新。@科林巴康:在你更新的提琴中,追加的文本没有样式:(但是OP的代码在那一行上也有+明文.addClass(“description”);
。@TrueBlueAussie-对不起,我最初链接到了错误的答案-我现在更新了我的评论,链接到了第一个答案(并且没有编辑-至少,在这个答案发布之前它肯定包含.val()
)。我并不想批评安迪,这个答案也是正确的。@Andy请看更新2(对不起,我知道这很烦人!)@RahulDesai@Andy实际上,我只想标题是粗体和显示:block
。描述不需要样式。@RahulDesai,在洛杉矶