这是我第一次使用.addClass()
。
在我的项目中,我需要在虚拟电话屏幕上显示通知(iPhone的图像)。通知包含title
和一些description
。此title
和description
来自同一webpage
的表单。要撰写此通知,我正在做:
var notificationText = $('#title').val().addClass('title') + plainText.addClass("description");
然而,我收到一个错误:
TypeError: $(...).val(...).addClass is not a function
我在这里做错了什么?
更新 所以,按照压倒性的要求,我做了:
var notificationText = $('#title').addClass('title').val() + plainText.addClass("description");
然而,我收到一个错误:
Uncaught TypeError: Object sss has no method 'addClass'
更新2:我不需要设置描述样式,因此我删除了与之相关的类。请参阅我的updated fiddle。现在问题是title
中的文字变得粗体而不是#notifications
中复制的文字。它没有根据CSS进行样式设计。
答案 0 :(得分:2)
在如此短的时间内得到了很多答案...... 叹息
我收集了我认为你想要的东西。试试这个:
$(document).ready(function(){
CKEDITOR.replace( 'description' );
$('#title').focus();
$('form').submit(function(event){
event.preventDefault();
var html=CKEDITOR.instances.description.getSnapshot();
var divEle=document.createElement("DIV");
divEle.innerHTML=html;
var plainText=(divEle.textContent || divEle.innerText);
var $title = $('<span></span');
$title.addClass('title');
$title.text($('#title').val());
var $desc = $('<span></span');
$desc.addClass('description');
$desc.text(plainText);
$('form').append($title);
$('form').append($desc);
});
});
你可以显然链接一些跨度操作,但我现在让它们可读。较短的版本看起来像:
var $title = $('<span></span').addClass('title').text($('#title').val());
var $desc = $('<span></span').addClass('description').text(plainText);
$('form').append($title).append($desc);
正如您现在可能知道的那样,但为了完整起见,最初的错误是尝试将jQuery
方法应用于string
个对象的结果。此解决方案会创建新的jQuery
span
个对象,然后可以对其进行样式化并将其附加到表单中。
答案 1 :(得分:1)
您正在尝试将类添加到值,这绝对不是jQuery
对象
请改为尝试:
$('#title').addClass('title').val()
答案 2 :(得分:1)
addClass
只能在jQuery对象上执行并返回一个jQuery对象 - 这就是使它可链接的原因。您不能将类添加到字符串中。
所以,在这段代码中,实际上有两个错误:
1)plainText.addClass
- plainText
是一个字符串,而不是jQuery对象。您必须将类添加到您创建的元素(在您的情况下,divEle
元素),但是,由于addClass
仅适用于jQuery对象,您必须首先将div转换为jQuery元素。您可以通过执行以下操作来完成此操作:
$(divEle).addClass('description');
2)addClass
返回一个jQuery对象,因此你不能用字符串连接它。
编辑:刚刚意识到您要将notificationText
(字符串)附加到DOM。您必须将其转换为div并将div添加到DOM。
jsFiddle:http://jsfiddle.net/7b3j2/17/
答案 3 :(得分:0)
要添加课程,您必须使用
$('#title').addClass('title');
如果您想获得该值,可以使用
$('#title').addClass('title').val()
答案 4 :(得分:0)
首先尝试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;
}
答案 5 :(得分:0)
你犯的错误:
<div id="title"><div>
$('#title').val().addClass('title')
- &gt;现在$('#title').val()
将提供该特定元素值。
- &gt; $('#title').val().addClass()
您要为该值添加类。
使用此:
$('#title').addClass();
因为你不能将类添加到元素的值。
你应该将addClass添加到特定元素,因为addClass在内部会将属性类添加到该元素。 所以最终解决方案变成了:
$('#title').addClass('title').val()
答案 6 :(得分:0)
因为你试图在class而不是element上添加class。
$('#title').val().addClass('title') //it is wrong
将其替换为:
$('#title').addClass('title')
如果plainText不是您通过
初始化的元素对象var plainText = $('#anotherId');
也会导致此错误。
答案 7 :(得分:0)
考虑#title
是元素的id。
您可以直接向其添加类名。
$('#title').addClass('className');
其中className
是该类的名称。
答案 8 :(得分:0)
虽然addClass
和val()
都是jQuery对象上的方法,但val()
不像addClass
那样可链接。执行$('#title').val()
时,如果没有返回对象,则只返回元素的字符串值。
请改用:
$('#title').addClass('title');
如果你仍然需要获得价值:
$('#title').addClass('title').val();
plaintext
产生错误的原因是因为您尝试在使用addClass
本机创建的DOM节点上使用jQuery document.createElement("DIV");
方法。这不行。要使它工作,您需要使用jQuery定义新元素:
var divEle = $('<div></div>');
然后添加类:
divEle.addClass('description');
或使用本机classname
方法将类添加到DOM节点:
divEle.className = divEle.className + " description";